让我们考虑下一个函数:
def generateUniqueIdent(String text, uniqueSuffix = {uid -> String.valueOf(uid)}) {
doSomething(text) + uniqueSuffix()
}
现在,当我尝试下一个修改时:
def generateUniqueIdent(String text, uniqueSuffix = { hash(text) }) {
doSomething(text) + uniqueSuffix()
}
..我得到了下一个错误:
| Error 编译 org.apache.tools.ant.BuildException 期间出现致命错误:BUG!源单元“此处的某些路径”中的“类生成”阶段中的异常尝试获取名称为text作为堆栈变量的变量,但未创建具有此名称的变量(使用 --stacktrace 查看完整跟踪)
同时,如果我尝试使用名称text
作为闭包的参数:
def generateUniqueIdent(String text, uniqueSuffix = {text -> hash(text) }) {
doSomething(text) + uniqueSuffix(text)
}
..然后我得到另一个错误:
当前作用域已经包含一个名称为text的变量
问题是:我能否以某种方式从闭包中访问其他参数,该闭包作为默认值分配给函数参数之一?
如果不是,那么,为什么我不能在所描述的闭包中使用与函数参数之一相同的名称?