groovy学习中的疑问

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()方法,所以会产生一个新的字符串值。

原文以上。

然后我验证:


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容