Tuple trong Swift

Một Tuple là một nhóm các giá trị gom lại thành một (có thể coi như một tập hợp, danh sách), kiểu của Tuple căn cứ vào vào danh sách các phần tử cách nhau bởi dấu , (phảy), các phần tử trong Tuple được bao bọc trong ký hiệu ()

Ví dụ như thông tin của một người có thể viết là ("XuanThuLab", 20) để biểu diễn dữ liệu Tên và Tuổi. Để truy cập phần tử dữ liệu thì dùng ký hiệu . và chỉ ra thứ tự (index) của của phần tử dữ liệu (tính từ 0). Như ví dụ sau:

//Tạo ra một Tuple 2 phần tử (String, Int)
var profile = ("XuanThuLab", 20)

//Đọc dữ liệu từ Tuple
var UserName = profile.0;   //XuanThuLab
var UserAge  = profile.1     //20

Bằng cách khai báo như trên biến profile có kiểu Tuple (String, Int). Khi các Tuple có cùng cấu trúc dữ liệu thì chúng có thể gán cho nhau, thực hện phép toán logic so sanh

Đặt tên phần tử trong Tuple

Ở phần trên, khi tạo Tuple các giá trị khởi tạo khai báo trong (), chúng không có tên nên việc truy cập đến phần tử phải thông của chỉ số thứ tự. Trong trường hợp muốn đặt tên phần tử (biến) để có thể truy cập qua tên thay vì chỉ số thì khai báo mỗi phần tử biểu diễn bằng tên:giá-trị như ví dụ sau:

var newprofile = (name:"XuanThuLab", age:20)

var NewUserName = newprofile.name;   //XuanThuLab
var NewUserAge  = newprofile.age     //20

Bạn cũng có thể dùng kỹ thuật Tuple này để khai báo và khởi tạo nhiều biến trên một dòng như:

var (var1, var2, var3) = ("Abc", 1, 2.2)
print(var1, var2, var3)

Nhiều khi cần trích dữ liệu nào đó thôi từ Tuple, thì có thể sử dụng ký hiệu _ để bỏ quá giá trị không cần quan tâm, ví dụ:

var t1 = ("A", "B", "C")
var (_, _, pr3 ) = t1

//Biến pr3 có giá trị "C"
print(pr3) //C

Trả về nhiều giá trị với Tuple

Bạn có thể xây dựng các hàm trả về nhiều giá trị bằng cách khai báo hàm đó trả về một Tuple, về xây dựng hàm sẽ tìm hiểu sau, ở đây xem xét quả một ví dụ đơn giản về hàm, nếu chữa rõ cũng không sao.

//Tạo ra kiểu mới có tên ProfileType
typealias ProfileType = (FirstName:String, LastName:String, FullName: String, Age:Int)

//Tạo hàm để trả về một kiểu ProfileType
func createProfile(firstName:String, lastName:String, age:Int) -> ProfileType {
    //Tạo một biến local kiểu ProfileType và trả về cho hàm
    let profile:ProfileType = (
        firstName,
        lastName,
        firstName + " "  + lastName,
        age);
    return profile
}
//Gọi hàm
var nProfile:ProfileType = createProfile(firstName: "XUANTHU", lastName: "LAB", age:20);
print(nProfile); //(FirstName: "XUANTHU", LastName: "LAB", FullName: "XUANTHU LAB", Age: 20)
Đăng ký theo dõi ủng hộ kênh