这是简单的脚本:
// define simple closuredef printValueClosure = { println "The value is: '$delegate'"}String.MetaClass.printValueClosure = printValueClosure// works fine'variable A'.printValueClosure()// define as methoddef printValueMethod(String s){ println "The value is: '$s'"}// how to do this!?String.MetaClass.printValueMethod = this.&printValueMethod(delegate)'variable B'.printValueMethod()
是否可以使用该方法,但是将第一个参数设置为调用对象?使用委托似乎不工作…不引用调用方的方法的分配没有问题.在这里工作吗
谢谢,
英戈
def printValueMethod(String s){ println "The value is: '$s'"}String.MetaClass.printValueMethod = { -> printValueMethod(delegate) }assert 'variable B'.printValueMethod() == "The value is: 'variable B'"
添加方法而不使用闭包的一种方法就是创建一个类别类并将其混合成如下:
class PrintValueMethodcategory { static def printValueMethod(String s) { println "The value is: '$s'" }}String.MetaClass.mixin(PrintValueMethodcategory)assert 'variable B'.printValueMethod() == "The value is: 'variable B'"
在这种特殊情况下,我不认为currying可以帮助,因为在分配给元类时,你不知道代表的价值.
总结以上是内存溢出为你收集整理的方法 – 将方法添加到元类全部内容,希望文章能够帮你解决方法 – 将方法添加到元类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)