gpt4 book ai didi

Groovy 1.7 更改 "final"?

转载 作者:行者123 更新时间:2023-12-02 10:02:15 26 4
gpt4 key购买 nike

刚开始学习 Groovy,拿到了 PragProg 的书《Programming Groovy》,在编译其中一个示例脚本时遇到了问题:

class GCar2 {
final miles = 0

def getMiles() {
println "getMiles called"
miles
}

def drive(dist) {
if (dist > 0) {
miles += dist
}
}
}

def car = new GCar2()

println "Miles: $car.miles"
println 'Driving'
car.drive(10)
println "Miles: $car.miles"

try {
print 'Can I see the miles? '
car.miles = 12
} catch (groovy.lang.ReadOnlyPropertyException ex) {
println ex.message
<小时/>
GroovyCar2.groovy: 20: cannnot access final field or property outside of constructor.
@ line 20, column 35.
def drive(dist) { if (dist > 0) miles += dist }
^
<小时/>

1.7 之前的 Groovy 版本不会给出错误。我查看了我能找到的所有文档,但没有看到讨论的问题。这是怎么回事?

亚伦

最佳答案

我对 Groovy 1.7 不太了解,但它看起来像是早期版本中的一个错误,现已修复 - 如果一个变量是最终的,那么您不应该能够在构造函数(或其声明)。如果可以的话,将其定为最终版本有何意义?

我怀疑它会阻止您在构造函数之外阅读它......

关于Groovy 1.7 更改 "final"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930735/

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