gpt4 book ai didi

Scala 并行赋值仅在声明中

转载 作者:行者123 更新时间:2023-12-04 17:52:33 24 4
gpt4 key购买 nike

拥有:

def f () = {
(1, "two", 3.0)
}

为什么没事
var (x, y, z) = f()

但不是

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 中你可以做这样的事情,但我想这被认为太困惑了,或者太难实现了。您可以随时使用 match像往常一样表达,通常你只需要一个 case ,例如 List((1,2),(3,4)).map{ case (a,b) => a*b } .

关于Scala 并行赋值仅在声明中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5747783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com