在Groovy类中,当内部方法调用括号时,getProperty()分辨率是否不同?

时间:2014-01-22 18:03:42

标签: syntax groovy

此代码不会生成错误。 (Groovy 2.2.1)

public class C {
  def getProperty(String name) {
    name;
  }

  def m(x) {
    println x
    return this;
  }

  def go() {
    r = m x m y m z;  // this is OK
    println r;
  }
}

然而,确实如此。

public class C {
  def getProperty(String name) {
    Keyword.intern(name);
  }

  def m(x) {
    println x
    return this;
  }

  def go() {
    println(m x m y m z); // this is NOT
  }
}

它会出现以下错误。

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
foo.groovy: 39: unexpected
token: x @ line 39, column 19.
       println(m x m y m z); // this is NOT

1 error

如何在方法调用parens内外进行此转换?

1 个答案:

答案 0 :(得分:4)

据我所知,命令链(这是这个语法糖的名称)仅在语句位置支持。至少在Groovy 1.8中引入它们就是这种情况。