13
オブジェクトL1
以下のとおりです。 varargsを渡すことでL1
を作成することはできますが、これは同じ構文を使用してL1
に割り当てることができます。残念ながら、私がここでやったやり方は、の中に入れ子の醜い構文が必要です。。Scala - 返されたvarargsを適用解除できますか?
object L2 {
def apply(stuff: String*) = stuff.mkString(",")
def unapply(s: String) = Some(s.split(","):_*)
}
val x2 = L2("4", "5", "6")
val L2(d,e,f) = x2
println("d=%s, e=%s, f=%s".format(d,e,f))
しかし、これはエラーを与える:
object L1 {
def apply(stuff: String*) = stuff.mkString(",")
def unapply(s: String) = Some(s.split(","))
}
val x1 = L1("1", "2", "3")
val L1(Array(a, b, c)) = x1
println("a=%s, b=%s, c=%s".format(a,b,c))
は、私は以下のL2
のように、明らかな方法のように思える何でこれを実現しようとし
error: no `: _*' annotation allowed here
(such annotations are only allowed in arguments to *-parameters)`.
はunapply
がすることが可能ですこのようにvarargsを使用しますか?
完璧!ありがとう! – dhg