English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تجميعات Scala

جمعيات Scala

كما في القوائم، تكون التجميعات غير قابلة للتغيير، ولكن على عكس القوائم يمكن أن تحتوي التجميعات على أنواع مختلفة من العناصر.

تكون قيم التجميع من خلال تضمين القيم الفردية داخل الأقواس المزدوجة. على سبيل المثال:

val t = (1, 3.14, "Fred")

في المثال أعلاه، تم تعريف ثلاثة عناصر في التجميع، وتبين أن أنواعها هي [Int, Double, java.lang.String].

بالإضافة إلى ذلك، يمكننا أيضًا تعريفها بهذه الطريقة:

val t = new Tuple3(1, 3.14, "Fred")

نوع التجميع الفعلي يعتمد على نوع عناصره، مثل (99, "w3codebox") هو Tuple2[Int, String]. ('u', 'r', "the", 1, 4, "me") هو Tuple6[Char, Char, String, Int, Int, String].

حاليًا، يدعم Scala أطول تجمع هو 22. للطول الأكبر يمكنك استخدام المجموعات أو توسيع التجميع.

يمكن الوصول إلى عناصر التجميع عن طريق الرقم الصحيح، مثل التجميع التالي:

val t = (4,3,2,1)

يمكننا استخدام t._1 للوصول إلى العنصر الأول، t._2 للوصول إلى العنصر الثاني، كما هو موضح أدناه:

object Test {
   def main(args: Array[String]) {
      val t = (4,3,2,1)
      val sum = t._1 + t._2 + t._3 + t._4
      println( "مجموع العناصر هو: " + sum )
   }
}

أ�行اء الكود أعلاه، الناتج المتوقع هو:

$ scalac Test.scala 
$ scala Test
مجموع العناصر هو: 10

تكرار الزوج

يمكنك استخدام Tuple.productIterator() طريقة لتكرار عرض جميع عناصر الزوج:

object Test {
   def main(args: Array[String]) {
      val t = (4,3,2,1)
      
      t.productIterator.foreach{ i =>println("القيمة = " + i )}
   }
}

أ�行اء الكود أعلاه، الناتج المتوقع هو:

$ scalac Test.scala 
$ scala Test
القيمة = 4
القيمة = 3
القيمة = 2
القيمة = 1

تحويل الزوج إلى نص

يمكنك استخدام Tuple.toString() طريقة لدمج جميع عناصر الزوج في نص، إليك مثال:

object Test {
   def main(args: Array[String]) {
      val t = new Tuple3(1, "hello", Console)
      
      println("الخط الناتج المدمج هو: " + t.toString() )
   }
}

أ�行اء الكود أعلاه، الناتج المتوقع هو:

$ scalac Test.scala 
$ scala Test
الخط الناتج المدمج هو: (1,hello,scala.Console$@4dd8dc3)

تبادل العناصر

يمكنك استخدام Tuple.swap طريقة لتغيير عناصر الزوج. إليك مثال:

object Test {
   def main(args: Array[String]) {
      val t = new Tuple2("www.google.com", "ar.oldtoolbag.com")
      
      println("الزوج المتبادل: " + t.swap )
   }
}

أ�行اء الكود أعلاه، الناتج المتوقع هو:

$ scalac Test.scala 
$ scala Test
الزوج المتبادل: (ar.oldtoolbag.com,www.google.com)

جمعيات Scala