は、Pythonで、このような何かすることが可能です:Scalaの同等
def blarg():
return "blargidy", "blarg"
i, j = blargh()
をScalaで利用できる同様のものがありますか?
は、Pythonで、このような何かすることが可能です:Scalaの同等
def blarg():
return "blargidy", "blarg"
i, j = blargh()
をScalaで利用できる同様のものがありますか?
あなたはタプルを返すことができます。
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
私はこれが古い質問であることを認識していますが、これを達成する別の方法があります。私はそこに何かの欠点があるかどうかはわかりませんが、利点は、返される値が「名前付き」なので、コードを少しだけ自明にしていることです。
(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
}
}
}
または、パターンマッチングが動作するようにcaseクラスを使用する –
素晴らしい、ありがとう! – dave
これはPythonで実際に動作するのと同じです。 –
@ KarlKnechtel、返される要素の数が変数の数と一致する場合のみ。それ以外の場合は、「あまりにも多くの値をアンパックする」というエラーが表示されます。これは、2番目の例のPythonで得られるものです。 – dave