我有一个简单的脚本,它可以运行并起作用:
var txtval = document.getElementById('permute_this').value + '<br>';
document.getElementById('results').innerHTML +=
(permute([txtval]));
但是,如果将其更改为此,运行它时会看到错误:
\n
错误:
println testReturn()
String testReturn() {
def str = /asdf/
return str
}
有人知道为什么我必须在返回前定义一个斜杠转义的字符串吗?
答案 0 :(得分:0)
在我看来,return
语句与groovy 2.x中的其他函数调用一样,并且斜线字符串在无括号的函数调用中效果不佳。
一个例子:
println /asdf/ // fails
println(/asdf/) // works
println testReturn()
String testReturn() {
/asdf/ //works - implicit return
}
String btestReturn() {
return /asdf/ // fails
}
String testReturn() {
return(/asdf/) //works
}
在我的书中,这是意外行为,并且是常规解析器的限制。
在groovy 3(或更具体地,在本例中为groovy 3.0.0-alpha-3)中,解析器已被重写,并包含以下代码:
println /asdf/ // fails
println(/asdf/) // works
println testReturn1()
println testReturn2()
println testReturn3()
String testReturn1() {
/asdf/ // works
}
String testReturn2() {
return /asdf/ // works
}
String testReturn3() {
return(/asdf/) // works
}
给出了一些更有用的错误:
Caught: groovy.lang.MissingPropertyException: No such property: println for class: solution
groovy.lang.MissingPropertyException: No such property: println for class: solution
at solution.run(solution.groovy:1)
告诉我们,没有括号,groovy无法确定println
是属性还是方法调用。删除第一行使上面的代码在groovy 3.x下工作。