gpt4 book ai didi

scala - 为什么在 val 变量上使用 += 和 a=x+y 时会出现不同的错误消息?

转载 作者:行者123 更新时间:2023-12-01 11:19:14 30 4
gpt4 key购买 nike

我定义了一个 val 变量 (t) 和一个具有 Int 值的数组 (m),然后尝试使用 for 循环对数组的所有元素求和有两种方式:情况1。使用 += (错误信息:value += 不是 Int 的成员)案例2。使用a=x+y方式(错误信息:重新赋值给val)

在这种情况下会出现错误,因为我正在尝试将新值重新分配给 val 变量,但为什么在 case1 和 case2 中会出现不同的错误消息?

scala> val t = 0                                                                                                                              
t: Int = 0

scala> val m = Array(1,2,3,4,5,6,7)
n: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7)

案例一:

scala> for(e<-m) t+=e                                                                                                                         
<console>:28: error: value += is not a member of Int
for(e<-m) t+=e
^

案例2:

scala> for(e<-m) t=t+e                                                                                                                        
<console>:28: error: reassignment to val
for(e<-m) t=t+e
^

最佳答案

tval 时,考虑 t += 42 的脱糖版本:

t.$plus$eq(42)

注意没有赋值发生,相反,它只是对 t 的方法调用。将此与 t += 42 的脱糖版本进行对比,当 tvar 并且它没有 +=可用的方法

t = t.$plus(42)

这里我们看到一个赋值语句。因此,由于在 t+=e 的情况下没有发生赋值,其中 tval,错误消息不指示 reassignment to val,而是提示缺少方法 +=,即 $plus$eq,在 t .

关于scala - 为什么在 val 变量上使用 += 和 a=x+y 时会出现不同的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56432269/

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