在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
Run Code Online (Sandbox Code Playgroud)
虽然这在实现和版本之间不可移植,但这是一个粗略的解决方案:
who_made_me=caller[3].split(':')[1][4..-2]
Run Code Online (Sandbox Code Playgroud)
这样做是它得到当前栈,跳过了琴弦initialize,allocate和new,然后获取方法名出字符串的.同样,这是完全黑客攻击,并且基于未指定的行为.除非绝对必要,否则我不建议使用它.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |