Scala相当于Python返回多个项目

dav*_*ave 20 python scala

在Python中,可以执行以下操作:

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

i, j = blargh()
Run Code Online (Sandbox Code Playgroud)

scala中是否有类似的东西?

Phi*_*ppe 31

你可以返回一个元组:

def blarg = ("blargidy", "blarg")

val (i, j) = blarg
Run Code Online (Sandbox Code Playgroud)

请注意并行变量赋值的模式匹配语法:这适用于任何模式,而不仅仅适用于元组.例如:

val list = 1 :: 2 :: 3 :: Nil

val x :: y = list // x = 1 and y = 2 :: 3 :: Nil
Run Code Online (Sandbox Code Playgroud)

  • 这实际上与它在Python中的工作方式非常相似. (3认同)

小智 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)