gpt4 book ai didi

ruby - 一个 Ruby 对象可以有多个特征类吗?

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

特征类被添加到继承层次中。

如果添加了多个单例方法,这些方法是添加到同一个特征类,还是都注入(inject)到该对象的继承层次结构中的不同特征类?

例如

def foo.test
0
end
def foo.test2
0
end

这是否会添加 2 个特征类:一个带有“test”方法,另一个带有“test2”方法?还是一种具有两种方法的特征类?

最佳答案

这些被添加到单个元类,因为对象总是只有一个单例类

你可以检查一下:

foo.singleton_methods
#=> [:test, :test2]
foo.method(:test)
#=> #<Method: #<Object:0x007ff9b4d48388>.test>
foo.method(:test2)
#=> #<Method: #<Object:0x007ff9b4d48388>.test2>

或使用 Method#owner :

foo.method(:test).owner == foo.method(:test2).owner
#=> true

关于ruby - 一个 Ruby 对象可以有多个特征类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41976277/

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