gpt4 book ai didi

ruby - 从 Ruby 中的方法中检索方法实例

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

这是 How to determine the class a method was defined in? 的后续问题(希望您不介意相似性)

给定一个类层次结构,一个方法可以检索它自己的 Method 实例吗?

class A
def foo
puts "A#foo: `I am #{method(__method__)}'"
end
end

class B < A
def foo
puts "B#foo: `I am #{method(__method__)}'"
super
end
end

A.new.foo
# A#foo: `I am #<Method: A#foo>'

B.new.foo
# B#foo: `I am #<Method: B#foo>'
# A#foo: `I am #<Method: B#foo>' # <- A#foo retrieves B#foo

这样 B.new.foo 就会打印

# B#foo: `I am #<Method: B#foo>'
# A#foo: `I am #<Method: A#foo>' # <- this is what I want

在上一个问题中,Jörg W Mittag suspected检索定义方法的类可能违反面向对象的范例。这也适用于此吗?

方法不应该“了解自己”吗?

最佳答案

我找到了一个 method正是这样做的。

class A
def foo
puts "A#foo: `I am #{method(__method__).super_method || method(__method__)}'"
end
end

我真的很佩服 Matz 和 Ruby 核心开发人员。这种方法的存在意味着他们已经想到了这种情况,并且已经考虑了如何处理它。

关于ruby - 从 Ruby 中的方法中检索方法实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34745608/

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