dönen?Scala eşdeğer birden fazla öğe böyle bir şey yapmak mümkün Python
def blarg = ("blargidy", "blarg")
val (i, j) = blarg
Not paralel değişken atama için desen eşleştirme sözdizimi:
dönen?Scala eşdeğer birden fazla öğe böyle bir şey yapmak mümkün Python
def blarg = ("blargidy", "blarg")
val (i, j) = blarg
Not paralel değişken atama için desen eşleştirme sözdizimi:
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
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
}
}
}
Veya örnek eşleme çalışması için bir örnek sınıfı kullanın. –
Müthiş, teşekkür (scala 2.11 üzerinde test)! – dave
Bu aslında Python'da çalıştığı gibi gerçekten aynı. –
@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