คอลเลกชัน Scala - Tuple
Scala tuple รวมรายการจำนวนคงที่เข้าด้วยกันเพื่อให้สามารถส่งต่อได้โดยรวม ซึ่งแตกต่างจากอาร์เรย์หรือรายการทูเปิลสามารถเก็บวัตถุที่มีประเภทต่างๆได้ แต่ก็ไม่เปลี่ยนรูปเช่นกัน
ต่อไปนี้เป็นตัวอย่างของทูเปิลที่มีจำนวนเต็มสตริงและคอนโซล
val t = (1, "hello", Console)
ซึ่งเป็นน้ำตาลซินแทติก (ชอร์ตคัท) ดังนี้ -
val t = new Tuple3(1, "hello", Console)
ประเภทที่แท้จริงของทูเปิลขึ้นอยู่กับจำนวนและองค์ประกอบที่มีและประเภทขององค์ประกอบเหล่านั้น ดังนั้นประเภทของ (99, "Luftballons") คือ Tuple2 [Int, String] ประเภทของ ('u', 'r', "the", 1, 4, "me") คือ Tuple6 [Char, Char, String, Int, Int, String]
ทูเปิลเป็นประเภท Tuple1, Tuple2, Tuple3 และอื่น ๆ ขณะนี้มีขีด จำกัด สูงสุดที่ 22 ใน Scala หากคุณต้องการมากกว่านั้นคุณสามารถใช้คอลเล็กชันไม่ใช่ทูเปิล สำหรับ TupleN แต่ละประเภทโดยที่ 1 <= N <= 22 Scala จะกำหนดวิธีการเข้าถึงองค์ประกอบจำนวนหนึ่ง ให้คำจำกัดความต่อไปนี้ -
val t = (4,3,2,1)
ในการเข้าถึงองค์ประกอบของทูเปิล t คุณสามารถใช้เมธอด t._1 เพื่อเข้าถึงองค์ประกอบแรก t._2 เพื่อเข้าถึงองค์ประกอบที่สองและอื่น ๆ ตัวอย่างเช่นนิพจน์ต่อไปนี้คำนวณผลรวมขององค์ประกอบทั้งหมดของ t
val sum = t._1 + t._2 + t._3 + t._4
คุณสามารถใช้ Tuple เพื่อเขียนเมธอดที่ใช้ List [Double] และส่งคืนจำนวนผลรวมและผลรวมของกำลังสองที่ส่งคืนใน Tuple สามองค์ประกอบ a Tuple3 [Int, Double, Double] นอกจากนี้ยังมีประโยชน์ในการส่งผ่านรายการค่าข้อมูลเป็นข้อความระหว่างนักแสดงในการเขียนโปรแกรมพร้อมกัน
ลองใช้โปรแกรมตัวอย่างต่อไปนี้ แสดงวิธีใช้ทูเพิล
ตัวอย่าง
object Demo {
def main(args: Array[String]) {
val t = (4,3,2,1)
val sum = t._1 + t._2 + t._3 + t._4
println( "Sum of elements: " + sum )
}
}
บันทึกโปรแกรมข้างต้นใน Demo.scala. คำสั่งต่อไปนี้ใช้เพื่อคอมไพล์และรันโปรแกรมนี้
คำสั่ง
\>scalac Demo.scala
\>scala Demo
เอาต์พุต
Sum of elements: 10
วนซ้ำบน Tuple
คุณสามารถใช้ได้ Tuple.productIterator() วิธีการวนซ้ำองค์ประกอบทั้งหมดของทูเพิล
ลองใช้โปรแกรมตัวอย่างต่อไปนี้เพื่อทำซ้ำทับสิ่งที่เพิ่มขึ้น
ตัวอย่าง
object Demo {
def main(args: Array[String]) {
val t = (4,3,2,1)
t.productIterator.foreach{ i =>println("Value = " + i )}
}
}
บันทึกโปรแกรมข้างต้นใน Demo.scala. คำสั่งต่อไปนี้ใช้เพื่อคอมไพล์และรันโปรแกรมนี้
คำสั่ง
\>scalac Demo.scala
\>scala Demo
เอาต์พุต
Value = 4
Value = 3
Value = 2
Value = 1
กำลังแปลงเป็น String
คุณสามารถใช้ได้ Tuple.toString()วิธีการเชื่อมต่อองค์ประกอบทั้งหมดของทูเปิลเป็นสตริง ลองใช้โปรแกรมตัวอย่างต่อไปนี้เพื่อแปลงเป็น String
ตัวอย่าง
object Demo {
def main(args: Array[String]) {
val t = new Tuple3(1, "hello", Console)
println("Concatenated String: " + t.toString() )
}
}
บันทึกโปรแกรมข้างต้นใน Demo.scala. คำสั่งต่อไปนี้ใช้เพื่อคอมไพล์และรันโปรแกรมนี้
คำสั่ง
\>scalac Demo.scala
\>scala Demo
เอาต์พุต
Concatenated String: (1,hello,scala.Console$@281acd47)
สลับองค์ประกอบ
คุณสามารถใช้ได้ Tuple.swap วิธีการสลับองค์ประกอบของ Tuple2
ลองใช้โปรแกรมตัวอย่างต่อไปนี้เพื่อสลับองค์ประกอบ
ตัวอย่าง
object Demo {
def main(args: Array[String]) {
val t = new Tuple2("Scala", "hello")
println("Swapped Tuple: " + t.swap )
}
}
บันทึกโปรแกรมข้างต้นใน Demo.scala. คำสั่งต่อไปนี้ใช้เพื่อคอมไพล์และรันโปรแกรมนี้
คำสั่ง
\>scalac Demo.scala
\>scala Demo
เอาต์พุต
Swapped tuple: (hello,Scala)