Elm - Tuples
Đôi khi, có thể cần phải lưu trữ một bộ sưu tập các giá trị thuộc nhiều loại khác nhau. Elm cung cấp cho chúng ta một cấu trúc dữ liệu được gọi là tuple phục vụ mục đích này.
Một bộ giá trị đại diện cho một tập hợp các giá trị không đồng nhất. Nói cách khác, bộ giá trị cho phép lưu trữ nhiều trường thuộc các loại khác nhau. Một bộ lưu trữ số lượng giá trị cố định. Tuples hữu ích khi bạn muốn trả về nhiều giá trị thuộc các kiểu khác nhau từ một hàm. Các cấu trúc dữ liệu này là bất biến giống như các kiểu khác trong cây du.
Cú pháp
(data1,data2)
Một ví dụ đơn giản được hiển thị bên dưới:
> ("TuotrialsPoint",5,True,"Hyderabad")
("TuotrialsPoint",5,True,"Hyderabad") : ( String, number, Bool, String )
Trong các phần tiếp theo, chúng ta sẽ tìm hiểu về các hoạt động tuple khác nhau.
Đầu tiên
Thao tác này trích xuất giá trị đầu tiên từ một bộ giá trị.
Cú pháp
Tuple.first tuple_name
> Tuple.first
<function> : ( a1, a2 ) -> a1
Hình minh họa
> Tuple.first (10,"hello")
10 : number
thứ hai
Các second hoạt động tuple trích xuất giá trị thứ hai từ một tuple.
Cú pháp
Tuple.second tuple_name
> Tuple.second
<function> : ( a1, a2 ) -> a2
Hình minh họa
> Tuple.second (10,"hello")
"hello" : String
Danh sách các bộ giá trị
Một Danh sách có thể lưu trữ Tuples. Nếu các bộ giá trị được sử dụng trong một danh sách, hãy đảm bảo rằng tất cả chúng đều có cùng kiểu dữ liệu và có cùng số lượng tham số.
Hình minh họa
> [("hello",20),("world",30)]
[("hello",20),("world",30)] : List ( String, number )
Tuple với chức năng
Một hàm có thể trả về các bộ giá trị. Ngoài ra, các bộ giá trị có thể được chuyển làm tham số cho các hàm.
Minh họa 1
Ví dụ sau định nghĩa một hàm fn_checkEven. Hàm này nhận một giá trị nguyên làm tham số và trả về một bộ giá trị.
> fn_checkEven no = \
if no%2 == 0 then \
(True,"The no is Even")\
else \
(False,"No is not even")
<function> : Int -> ( Bool, String )
> fn_checkEven 10
(True,"The no is Even") : ( Bool, String )
> fn_checkEven 11
(False,"No is not even") : ( Bool, String )
>
Minh họa 2
Phần sau chuyển một tuple làm tham số cho một hàm.
> fn_add (a,b) = \
| a+b
<function> : ( number, number ) -> number
> fn_add (10,20)
30 : number
Hàm fn_add nhận một bộ giá trị có 2 giá trị số và trả về tổng của chúng.
Phá hủy
Việc phá hủy liên quan đến việc chia nhỏ một bộ giá trị thành các giá trị riêng lẻ. Để truy cập các giá trị riêng lẻ trong một bộ có ba phần tử trở lên, chúng tôi sử dụng cấu trúc hủy. Ở đây, chúng tôi gán từng giá trị trong một bộ giá trị cho các biến khác nhau. Sử dụng _ người ta có thể xác định trình giữ chỗ cho các giá trị sẽ bị bỏ qua hoặc bỏ qua.
Hình minh họa
> (first,_,_) = (10,20,30)
10 : number
> first
10 : number
Hình minh họa
Trong ví dụ này, chúng tôi sẽ sử dụng cú pháp khối let..in để cấu trúc lại. Khối let chứa các biến và khối in chứa các biểu thức cần được đánh giá và giá trị sẽ được trả về.
> t1 = (10,20,30)
(10,20,30) : ( number, number1, number2 )
> let \
(a,b,c) = t1 \
in\
a + b +c
60 : number
Chúng tôi đang khai báo các biến abc trong mệnh đề let và truy cập chúng bằng cách sử dụng trong mệnh đề.