';这';在Groovy元编程中
在下面的Groovy代码中,为了将';这';在Groovy元编程中,groovy,metaprogramming,Groovy,Metaprogramming,在下面的Groovy代码中,为了将fileAsString方法添加到String类中,有人能解释一下“this”到底指的是什么吗。我原以为它是调用fileAsString方法的对象,但很明显,这实际上就是委托所指的对象 String.metaClass.fileAsString = { this.class.getResourceAsStream(delegate).getText() } 谢谢, Don新定义的方法是闭包,因此“this”的含义与定义方法时的含义相同。“this”通常
fileAsString
方法添加到String
类中,有人能解释一下“this”到底指的是什么吗。我原以为它是调用fileAsString
方法的对象,但很明显,这实际上就是委托所指的对象
String.metaClass.fileAsString = {
this.class.getResourceAsStream(delegate).getText()
}
谢谢,
Don新定义的方法是闭包,因此“this”的含义与定义方法时的含义相同。“this”通常指定义方法的对象,如下所示:
class Foo {
def meta() {
String.metaClass.bar = {
println(this.class) // 'this' refers to the instance of Foo
}
}
def main() {
meta()
new String().bar()
}
}
new Foo().main() // prints "class Foo"
如果代码没有出现在类中(例如脚本中),“this”指的是什么?Groovy从脚本生成一个类(该类将扩展Groovy.lang.script)。”脚本中的“this”表示生成的类的实例。Ha!我经常犯同样的错误。太棒了JavaScript,尽管有时候如果是的话,对我来说会很好。