加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy可选括号和圆点

发布时间:2020-12-14 16:29:21 所属栏目:大数据 来源:网络整理
导读:我正在学习Groovy并且对它如何构建智能DSL感到非常印象深刻,但我对括号和点是可选的规则感到有些困惑.请考虑以下代码: Integer take(Integer x) {x}take 3 plus 4 这按预期工作并产生7的输出(当在控制台中运行时),因为groovy将最后一行理解为take(3).plus(4
我正在学习Groovy并且对它如何构建智能DSL感到非常印象深刻,但我对括号和点是可选的规则感到有些困惑.请考虑以下代码:

Integer take(Integer x) {x}
take 3 plus 4

这按预期工作并产生7的输出(当在控制台中运行时),因为groovy将最后一行理解为take(3).plus(4).

现在,println取3加4不起作用,因为groovy理解为println(take).3(加).4这是无稽之谈.

我所看到的每个例子都显示出这些表达式,但显然是这样

s = take 3 plus 4

在s中工作并存储结果7.我的问题是,为什么呢

println( take 3 plus 4 )

不行?显然,groovy会解析这些表达式,即使它们不是在一条线上(如赋值工作所示).我原以为添加这些括号会消除那条不起作用的形式的歧义,并且它会按照我的意图打印7.

相反,groovy会给出错误’意外令牌:3′.据我所知,groovy不会允许println中的可选括号或点,即使它看起来不明确.什么时候这种技巧确实有效?

解决方法

这属于嵌套方法调用的类别,在这种情况下,您不能省略括号.这会导致歧义,结果是意外的,因为println方法认为你传递了多个参数.您可以通过在println方法中使用groovy字符串来减少歧义.

println "${take 3 plus 4}"

更多信息:Omit Parentheses

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读