gpt4 book ai didi

ruby - 如何使对象可调用?

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:46 25 4
gpt4 key购买 nike

有没有一种方法可以创建一个具有属性并且可以仅使用函数调用的符号来调用的对象?相当于 Python 的 __call__

例如:

obj = ExampleClass.new()
obj() # call notation

欢迎使用替代方法,我需要一种方法让可调用“对象”存储其自身的属性。

我想做的是在变量中存储一个可调用的“对象”。该对象具有与其关联的属性,同时,它可以像方法一样使用。

最佳答案

如果您愿意稍微更改所需的语法...

class Foo
def call
puts 'called'
end
end

f = Foo.new
f.()
# >> called

在 ruby​​ 中,如您所问的那样,确切的语法是不可能的,因为括号是可选的,因此 f()f 相同。其中,在可调用对象的情况下是不明确的。您要执行调用还是仅引用可调用对象?显式调用(使用点语法)消除了歧义。

关于ruby - 如何使对象可调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45020623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com