gpt4 book ai didi

ruby - 获取 ruby​​ 函数对象本身

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

在 Ruby 中,一切都应该是一个对象。但是我有一个很大的问题是要以通常的方式定义函数对象,比如

def f
"foo"
end

与 Python 不同,f 是函数结果,而不是函数本身。因此,f()fObjectSpace.f都是"foo"。此外,f.methods 仅返回字符串方法列表。

如何访问函数对象本身?

最佳答案

您只需使用 method 方法。这将返回与该方法匹配的 Method 实例。一些例子:

>> def f
>> "foo"
>> end
=> nil
>> f
=> "foo"
>> method(:f)
=> #<Method: Object#f>
>> method(:f).methods
=> [:==, :eql?, :hash, :clone, :call, :[], ...]
>> class SomeClass
>> def f
>> "bar"
>> end
>> end
=> nil
>> obj = SomeClass.new
=> #<SomeClass:0x00000001ef3b30>
>> obj.method(:f)
=> #<Method: SomeClass#f>
>> obj.method(:f).methods
=> [:==, :eql?, :hash, :clone, :call, :[], ...]

希望这对您有所帮助。

关于ruby - 获取 ruby​​ 函数对象本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933390/

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