在Python有可能做這樣的事情:斯卡拉相當於Python中返回多個項目
def blarg():
return "blargidy", "blarg"
i, j = blargh()
是否有類似階提供的東西嗎?
在Python有可能做這樣的事情:斯卡拉相當於Python中返回多個項目
def blarg():
return "blargidy", "blarg"
i, j = blargh()
是否有類似階提供的東西嗎?
您可以返回一個元組:
def blarg = ("blargidy", "blarg")
val (i, j) = blarg
注意事項並聯可變分配模式匹配語法:這適用於任何模式,不僅爲元組。例如:
val list = 1 :: 2 :: 3 :: Nil
val x :: y = list // x = 1 and y = 2 :: 3 :: Nil
我意識到這是一個老問題,但還有另一種方法可以實現。我不知道它是否有任何缺點,但優點是返回的值是「命名的」,使得代碼更加自明。
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
}
}
}
或者使用case類,以便模式匹配工作 – 2015-07-27 15:15:27
真棒,謝謝(斯卡拉上測試2.11)! – dave 2011-12-20 19:10:05
這實際上和Python中的工作方式一樣。 – 2011-12-20 19:40:00
@KarlKnechtel,僅當返回的元素數量與變量數量匹配時。否則,你會得到「解包太多的值」這個錯誤,這是你在第二個例子中得到的Python。 – dave 2011-12-20 20:03:35