gpt4 book ai didi

ruby - 如何确定定义方法的类?

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

我想动态确定当前方法定义的类。

这是我正在尝试做的静态示例:

class A
def foo
puts "I was defined in A"
end
end

class B < A
def foo
puts "I was defined in B"
super
end
end

A.new.foo
# I was defined in A

B.new.foo
# I was defined in B
# I was defined in A <- this is the tricky one

如何用动态表达式替换上面字符串中的AB

显然,#{self.class} 不起作用。 (它会为 B 打印两次 I was defined in B)

我怀疑答案是“你不能”,但也许我忽略了一些东西。

最佳答案

这个呢?

class A
def foo
puts "I was defined in #{Module.nesting.first}"
end
end

class B < A
def foo
puts "I was defined in #{Module.nesting.first}"
super
end
end

根据 WandMaker 的建议进行了更正。

关于ruby - 如何确定定义方法的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34742181/

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