var a = prompt('Number or String? Verify now!');
if(!isNaN(a)){
alert('This is number.');
}
else alert('This is string.')
我无法理解这种结构@CompileDynamic
ClassNode buildTemplateClass(ClassNode reference) {
def methodCount = constX(reference.methods.size())
def fieldCount = constX(reference.fields.size())
return new MacroClass() {
class Statistics {
java.lang.Integer getMethodCount() {
return $v { methodCount }
}
java.lang.Integer getFieldCount() {
return $v { fieldCount }
}
}
}
}
。这是什么意思,为什么在这里需要?有关代码在做什么的完整参考,请参考here。
如果不清楚constX方法引用的是here。
答案 0 :(得分:1)
正如在您的doc中所写的那样,powers = list(zip(*((i, i**2, i**3) for i in range(1, n+1))))
# [(1, 2, 3), (1, 4, 9), (1, 8, 27)]
s = sum(p0 * p1 * p2 for p0, p1, p2 in product(*powers))
在宏中使用 替换了表达式
为了替换宏内的任何表达式,我们需要使用$ v方法。 $ v接受闭包作为参数,并且只允许闭包替换表达式,这意味着类继承了org.codehaus.groovy.ast.expr.Expression。