如果我有这样的课程:
class Person {
def name
def greeting = "hello $name"
}
Run Code Online (Sandbox Code Playgroud)
我叫bob = new Person(名字:"bob")
当我在这一点上检查鲍勃时,我看到问候语中没有"鲍勃".我究竟做错了什么?
tim*_*tes 11
您可以使用@Lazy注释来解决此问题
class Person {
def name
@Lazy def greeting = "hello $name"
}
bob = new Person(name: "bob")
println bob.greeting
Run Code Online (Sandbox Code Playgroud)
将hello bob根据您的要求打印.注释会更改问候语的getter,以便仅在第一次调用时生成(然后缓存结果).greeting一旦它被调用一次就会产生静电的副作用,但是你没有说它是否需要name随着时间的推移而改变(由于变化)...即;
bob = new Person(name: "bob")
println bob.greeting
bob.name = 'dave'
println bob.greeting
Run Code Online (Sandbox Code Playgroud)
将打印:
hello bob
hello bob
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |