Groovy:如何将闭包作为参数传递以执行类内的方法

罗德里戈·罗德里格斯(Rodrigo Rodrigues)

我需要通过“闭包方式”传递要在类内执行的方法列表,请参见下面的代码

 class A{
    def m1(){
      println "Method1"
    }

    def m2(){
      println "Method1"
    }

   def commands = { closure->
      println "before"
      closure.call()
      println "after"    
   }

}


A a = new A()
a.commands{
   println "before execute method m1"
   m1() //A need to execute m1 method of the class A
   println "after execute method m1"
}

当我评论m1()输出

  before
  before execute method m1
  after execute method m1
  after

否则抛出异常 MissingMethodException: No signature of method for method m1()

因此,它不将该m1()方法识别class A

杰夫·斯科特·布朗

根据您真正要完成的工作,您可能想要这样的东西...

class A{
    def m1(){
        println "Method1"
    }

    def m2(){
        println "Method1"
    }

    def commands(closure) {
        def c = closure.clone()
        c.delegate = this
        println "before"
        c()
        println "after"
    }
}

委托有机会响应在闭包内部进行的方法调用。将委托设置为this会导致将调用m1()分派到的实例A您可能还对设置resolveStrategy闭包属性感兴趣为有效值resolveStrategyARE Closure.DELEGATE_FIRSTClosure.OWNER_FIRSTClosure.DELEGATE_ONLYClosure.OWNER_ONLYowner是创建关闭和不能改变的东西。delegate可分配的任何对象。当闭包进行方法调用时,方法可能由owner来处理,delegateresolveStrategy在决定使用哪种方法时起作用。名称DELEGATE_ONLYOWNER_ONLYDELEGATE_FIRSTOWNER_FIRST我想不言自明。如果您需要更多信息,请告诉我。

希望对您有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift:如何将闭包作为函数参数传递

来自分类Dev

Swift:如何将闭包参数从类方法传递给类中的函数

来自分类Dev

如何将$ this绑定到在PHP 5.4中作为方法参数传递的闭包?

来自分类Dev

Jenkins/Groovy:如何将命名参数和闭包传递给同一个方法?

来自分类Dev

groovy ..将闭包作为参数传递给另一个闭包

来自分类Dev

如何将闭包作为变量传递?

来自分类Dev

如何传递闭包以将 Ruby 作为参数发送

来自分类Dev

如何将类作为方法的参数传递?

来自分类Dev

如何将类作为可选参数传递给方法?

来自分类Dev

groovy.lang.MissingMethodException尝试将闭包作为参数传递时

来自分类Dev

如何将方法作为参数传递?

来自分类Dev

如何将XML节点路径作为参数传递给Groovy中的方法?

来自分类Dev

如何以参数为参数传递闭包并执行它?

来自分类Dev

如何重构Groovy中作为方法调用参数的闭包中的重复项?

来自分类Dev

将闭包作为参数传递给构造函数C ++

来自分类Dev

将口才模型作为PHP中的闭包参数传递

来自分类Dev

如何通过原始指针将闭包作为C函数的参数传递?

来自分类Dev

Swift:将闭包作为类变量中的init参数

来自分类Dev

如何将函数指针作为类模板参数传递?

来自分类Dev

如何将类实例作为参数传递

来自分类Dev

如何将类实例作为参数传递?

来自分类Dev

如何将类作为函数参数传递?

来自分类Dev

Swift 以参数作为参数传递闭包

来自分类Dev

如何将属性作为参数传递给在类上调用的方法?

来自分类Dev

Python,如何将函数作为参数传递给类方法

来自分类Dev

如何将非静态方法从特定类作为参数传递给Function

来自分类Dev

如何将数据成员作为默认参数传递给类方法?

来自分类Dev

如何将子类作为需要超类的方法的参数传递?

来自分类Dev

从 Groovy/Jenkins 中的类传递闭包

Related 相关文章

  1. 1

    Swift:如何将闭包作为函数参数传递

  2. 2

    Swift:如何将闭包参数从类方法传递给类中的函数

  3. 3

    如何将$ this绑定到在PHP 5.4中作为方法参数传递的闭包?

  4. 4

    Jenkins/Groovy:如何将命名参数和闭包传递给同一个方法?

  5. 5

    groovy ..将闭包作为参数传递给另一个闭包

  6. 6

    如何将闭包作为变量传递?

  7. 7

    如何传递闭包以将 Ruby 作为参数发送

  8. 8

    如何将类作为方法的参数传递?

  9. 9

    如何将类作为可选参数传递给方法?

  10. 10

    groovy.lang.MissingMethodException尝试将闭包作为参数传递时

  11. 11

    如何将方法作为参数传递?

  12. 12

    如何将XML节点路径作为参数传递给Groovy中的方法?

  13. 13

    如何以参数为参数传递闭包并执行它?

  14. 14

    如何重构Groovy中作为方法调用参数的闭包中的重复项?

  15. 15

    将闭包作为参数传递给构造函数C ++

  16. 16

    将口才模型作为PHP中的闭包参数传递

  17. 17

    如何通过原始指针将闭包作为C函数的参数传递?

  18. 18

    Swift:将闭包作为类变量中的init参数

  19. 19

    如何将函数指针作为类模板参数传递?

  20. 20

    如何将类实例作为参数传递

  21. 21

    如何将类实例作为参数传递?

  22. 22

    如何将类作为函数参数传递?

  23. 23

    Swift 以参数作为参数传递闭包

  24. 24

    如何将属性作为参数传递给在类上调用的方法?

  25. 25

    Python,如何将函数作为参数传递给类方法

  26. 26

    如何将非静态方法从特定类作为参数传递给Function

  27. 27

    如何将数据成员作为默认参数传递给类方法?

  28. 28

    如何将子类作为需要超类的方法的参数传递?

  29. 29

    从 Groovy/Jenkins 中的类传递闭包

热门标签

归档