Scala相当于Python返回多个项目

时间:2011-12-20 19:01:47

标签: python scala

在Python中,可以这样做:

def blarg():
    return "blargidy", "blarg"

i, j = blargh()

scala中是否有类似的内容?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:6)

我意识到这是一个古老的问题,但还有另一种方法可以达到同样的目的。我不知道它是否有任何缺点,但优点是返回的值是"命名为#34;,使代码更加不言自明。

(在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
        }
    }
}