gpt4 book ai didi

ruby - 继承改变方法类

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

以下打印 Bar 两次:

class Foo
def foo
p self.class # => prints Bar
end
end

class Bar < Foo
def foo
p self.class # => prints Bar
super
end
end

b = Bar.new
b.foo

如何打印出来

Bar
Foo

?即我想知道每个方法定义在哪个类上。

最佳答案

要捕获最初定义方法的上下文,您可以使用 define_method 而不是 def 来获得适当的闭包。一个简单的例子:

class Foo

klass = self
define_method(:foo){p klass}

end

class Bar < Foo

def foo
p self.class
super
end

end

b = Bar.new

b.foo

关于ruby - 继承改变方法类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23528378/

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