【发布时间】:2012-01-04 00:37:38
【问题描述】:
在 Ruby 中,有没有办法获取创建 MyClass 实例的类的名称?
我知道我可以将它作为参数传递给我的初始化方法,但我想知道是否已经有任何数据与在 MyClass 中创建 MyClass 实例的类有关。
应该是这样的
class MyClass
def initialize
@who_called_me = who_called_me.name
end
def who_called_me
puts @who_called_me
end
end
【问题讨论】:
-
如果您需要知道这一点,那么您的设计可能有问题。
-
一般来说,我想不出简单的方法来做到这一点。但是您可以获取堆栈回溯的字符串并在调用
new之前将其解析为帧。这可能会为您提供名为new的代码部分。但这会使您的代码依赖于堆栈回溯的格式。不是一件好事。 -
这是个特例,不过感谢质疑我的设计,真的很有帮助
-
我按照我上面的建议添加了一个答案。我还没有测试过,但我会的。
-
并非所有类都有名称,例如
c = Class.new; puts c.name。当然,这是一个病态的案例,但是......
标签: ruby