【发布时间】:2023-03-28 06:50:02
【问题描述】:
假设有一个函数def f = { x -> x + 4 }。
有没有办法像7.f() 这样调用它并得到11?
【问题讨论】:
-
def f = { x -> x + 4 }是一个闭包 -
标题严重误导。这篇文章询问如何“向数字添加方法”,与调用函数无关(“作为闭包”?)。在标题和预期结果的上下文中考虑
f(7)。
假设有一个函数def f = { x -> x + 4 }。
有没有办法像7.f() 这样调用它并得到11?
【问题讨论】:
def f = { x -> x + 4 } 是一个闭包
f(7)。
是的,您可以将该函数作为方法添加到 Integer 类,但是,您最好使用闭包的 delegate,而不是使用 x 变量:
Integer.metaClass.f = { delegate + 4 }
assert 7.f() == 11
【讨论】: