Scala中返回多个项的等效Python方式
在Python中,可以做类似这样的事情:
def blarg():
return "blargidy", "blarg"
i, j = blargh()
在Scala中有没有类似的功能呢?
2 个回答
6
我知道这个问题已经很老了,但还有另一种方法可以实现相同的效果。我不太清楚这样做是否有缺点,但好处是返回的值是“命名的”,这样代码看起来更容易理解。
(在scala 2.11上测试过)
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
}
}
}
31
你可以返回一个元组:
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