groovy学习中的疑问

2016-06-30  本文已影响23人  许先森的许

def number =1def eagerGString ="value == ${number}"def lazyGString ="value == ${ -> number }"asserteagerGString =="value == 1"assertlazyGString =="value == 1"number =2asserteagerGString =="value == 1"assertlazyGString =="value == 2"

可以看见,eagerGString是普通的双引号插值站位替换,lazyGString是双引号闭包插值替换,我们可以发现在number变为2以后他们的运算结果就有了差异。可以明显推理到结论,一个普通插值表达式值替换实际是在GString创建的时刻,一个包含闭包的表达式由于延迟运算调运toString()方法,所以会产生一个新的字符串值。

原文以上。

然后我验证:

为什么说这个是闭包的延迟运算导致  我怎么看像是响应式

上一篇下一篇

猜你喜欢

热点阅读