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

groovy – 为什么意外的令牌:*在两行操作时

发布时间:2020-12-14 16:28:47 所属栏目:大数据 来源:网络整理
导读:在1.8控制台中运行以下命令: def accessories = nullfinal int prime = 31;int result = 1;result = prime * result + ((accessories == null) ? 0 : accessories .hashCode()); 我得到一个编译错误说明: 意外的令牌:*在第5行,列:13 然而,当我将“*结果
在1.8控制台中运行以下命令:

def accessories = null
final int prime = 31;
int result = 1;
result = prime
    * result
        + ((accessories == null) ? 0 : accessories
                .hashCode());

我得到一个编译错误说明:

意外的令牌:*在第5行,列:13

然而,当我将“*结果”移动到前一行时,它会编译并运行得干净利落.我搜索过试图找到一个解释,但到目前为止没有运气.谁能解释一下?

def accessories = null
final int prime = 31;
int result = 1;
result = prime * result
        + ((accessories == null) ? 0 : accessories
                .hashCode());

解决方法

因为Groovy的语句不是由;而是由换行符分隔.它无法知道下面的行是上面一行语句的延续.你可以逃脱换行符:

int i = 10 
    * 9
assert i == 90

更新:

实际上,Groovy确实从上面的行中识别了一些语句.至少点被识别:

assert [1,2]
  .join("")
  .padLeft(4,"a") == "aa12"

还有一个声明,以及 – 和?(可能更多)could be methods:

def m = "aa"
  - m // fails with "No signature of method: java.lang.String.negative()"

(编辑:李大同)

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

    推荐文章
      热点阅读