คอลเลกชัน 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)