Having:
def f () = {
(1, "two", 3.0)
}
为什么可以
var (x, y, z) = f()
but not
var i = 0
var j = "hello"
var k = 0.0
// use i, j, k
...
//then
(i, j, k) = f() // ; expected but = found
?
您可以在此处看到初始化变量时模式匹配的有限版本。请注意,这不仅适用于元组:
val a :: b = List(1,2,3)
println(a) //1
println(b) //List(2, 3)
这个功能似乎是直接从 Haskell 借来的,你也可以使用模式进行初始化:
let (a,b) = getTuple
in a*b
由于 Haskell 没有可变数据,因此无法分配某些内容。
在 Scala 中你could做这样的事情,但我想这被认为太混乱,或者可能太难实现。您始终可以使用match
像往常一样表达,通常你只需要一个case
, e.g. List((1,2),(3,4)).map{ case (a,b) => a*b }
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)