在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