【问题标题】:Apply closure as a class method将闭包作为类方法应用
【发布时间】:2023-03-28 06:50:02
【问题描述】:

假设有一个函数def f = { x -> x + 4 }

有没有办法像7.f() 这样调用它并得到11

【问题讨论】:

  • def f = { x -> x + 4 } 一个闭包
  • 标题严重误导。这篇文章询问如何“向数字添加方法”,与调用函数无关(“作为闭包”?)。在标题和预期结果的上下文中考虑f(7)

标签: groovy closures


【解决方案1】:

是的,您可以将该函数作为方法添加到 Integer 类,但是,您最好使用闭包的 delegate,而不是使用 x 变量:

Integer.metaClass.f = { delegate + 4 }

assert 7.f() == 11

【讨论】:

    猜你喜欢
    • 2015-02-18
    • 2023-03-13
    • 2011-12-14
    • 2010-11-26
    • 2011-02-22
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多