Tuple là một scala collection chứa nhiều giá trị giống nhau hoặc khác nhau kiểu dữ liệu để chúng có thể được truyền đi. Không giống như array và list, tuple có thể chứa các object với kiểu khác nhau. Scala Tuple là immutable
Hãy xem ví dụ bên dưới đây
val s1 = (12,"Harry")
Ở đây chúng ta khai báo một Tuple s1
chứa student ID với kiểu là integer và tên của student với kiểu là String.
Tuple s1 ở trên chúng ta cũng có thể khai báo như sau
val s1 = new Tuple2(12,"Harry")
Kiểu của Tuple dựa trên số phần tử được chứa bên trong và kiểu dữ liệu của các phần tử này. (12, "Harry")
có kiểu là Tuple2[Int, String]
Tuple giới hạn tối đa chỉ chứa được 22 phần tử. Đối với mỗi Tuple với kiểu TupleN
, điều kiện 1 <= N <= 22. Chúng ta hãy cùng xem ví dụ sau để hiểu làm thể nào để truy cập vào một Tuple. Chúng ta có một Tuple Integer.
val m1 = (20,12,16,4)
Các phần tử của Tuple m1 có thể được truy cập bằng cách gọi m1._1
cho phần tử đầu tiên, m1._2
cho phần tử thứ 2. Chúng ta có thể làm tương tự như vậy với các phần tử khác.
val mul = m1._1* m1._2*m1._4
Chúng ta đang thử truy cập phần tử thứ 1, thứ 2 và thứ 4 của Tuple m1
và thực hiện nhân các giá trị lại với nhau và lưu trữ trong biến mul
.
object Multiply { def main(args: Array[String]) { val m1 = (20, 12, 16, 4) val mul = m1._1 * m1._2 * m1._4 println("Result is : " + mul) } }
Kết quả
Result is : 960
Lặp trên Tuple
Phương thức Tuple.productIterator()
lặp tất cả các phần tử chứa trong Tuple
Nào chúng ta hãy cùng xem ví dụ in ra tên của các sinh viên dùng vòng lặp trên Tuple
object Iterate { def main(args: Array[String]) { val names = ("John","Smith","Anderson","Steve","Rob") names.productIterator.foreach{ i => println("Value = " + i )} } }
Chúng ta tạo một Tuple names và sử dụng phương thức productIterator để lặp và in ra tên của các sinh viên.
Kết quả
Student Names are : John Smith Anderson Steve Rob
Hoán đổi các phần tử Tuple
Phương thức Tuple.swap
được dùng để hoán đổi các phần tử của Tuple.
object Swap { def main(args: Array[String]) { val id = new Tuple2(12,34) println("Swapped Tuple Id is:" + id.swap) } }
Kết quả
Swapped Tuple Id is:(34,12)
Chuyển thành string
Phương thức Tuple.toString() nối tất cả các phần tử trong Tuple thành string
Hãy cùng xem ví dụ sau
object StringConversion { def main(args: Array[String]) { val student = new Tuple3(12, "Rob", "IT") println("Concatenated String: " + student.toString()) } }
Kết quả
Concatenated String: (12,Rob,IT)