我有这个测试代码:
def p = [:]
p.foo = [:]
p.foo.bar = 120
p.foo.bar - 3
(p.foo.bar) + 3
为什么在最后一个语句中出现编译错误:“无法解析类p.foo.bar”?
感谢您的帮助
Groovy版本1.8.1
答案 0 :(得分:3)
...
((1) as p.foo.bar)
这意味着,显然,它正在尝试强制转换 1
到名为p.foo.bar
的类。
你可以深入挖掘一下,看看解析器正在解析这样的语句:
(p.foo.bar)(+1)
与
相同(p.foo.bar)1
因此,解析器/编译器将+
视为一元+
运算符。这就是你得到错误的原因。 (围绕它的方法是删除括号,或交换参数的顺序!)