2011-12-20 16 views

cevap

31

Bir tuple döndürmek bu sadece tuplelar için, herhangi bir desen için çalışır. Örneğin:

val list = 1 :: 2 :: 3 :: Nil 

val x :: y = list // x = 1 and y = 2 :: 3 :: Nil 
+0

Müthiş, teşekkür (scala 2.11 üzerinde test)! – dave

+3

Bu aslında Python'da çalıştığı gibi gerçekten aynı. –

+1

@KarlKnechtel, yalnızca döndürülen öğe sayısı değişken sayısıyla eşleşiyorsa. Aksi takdirde, ikinci örnekte Python'da alacağınız "açılacak çok fazla değer" hatası alırsınız. – dave

6

Bunun eski bir soru olduğunu anlıyorum, ama aynı şeyi başarmanın başka bir yolu var. Bunun bir dezavantajı olup olmadığını bilmiyorum, ama avantajı geri verilen değerlerin "isimlendirilmiş" olması ve kodu biraz daha açık bir şekilde ortaya koymasıdır.

package test.scala.misc 

object TestReturnMultipleNamedValues extends App { 

    val s = getMultipleNamedValues 

    println(s"changed=${s.dsChanged} level=${s.dsLevel}") 

    /** Returns an anonymous structure with named members. 
    * */ 
    def getMultipleNamedValues() : {val dsChanged : Boolean;val dsLevel : Int} = { 
     new { 
      val dsChanged = true 
      val dsLevel = 1 
     } 
    } 
} 
+1

Veya örnek eşleme çalışması için bir örnek sınıfı kullanın. –

İlgili konular