【发布时间】:2016-03-13 20:20:23
【问题描述】:
假设我在变量var 中有#<Class:A>(这是A 的单例类),我想做var.some_function 给A 作为结果,这样的函数是否存在于ruby 中?
显然,一种方法是Object.const_get var.to_s.split(':')[1].split('>')[0],但在 ruby 中是否有更好的方法或现有函数?
请允许我进一步澄清我的问题!
class A
class << self
p self
end
end
给我哪个是 A 的单例类。我想要的是
class A
class << self
p self.some_thing
end
end
给我 A(准确地说是 A 级)。
【问题讨论】:
-
可能你记住
self.class或类似的东西 -
执行
p var会返回什么? -
你知道
A会提前吗? (我假设没有。)您能否提供更多相关的上下文来说明您如何创建单例类以及为什么需要原始类(以及为什么不能以其他方式获得它)? -
是的,我可以通过另一种方式得到它,就像我在发布的问题中提到的那样。我想知道,因为我想在我正在扩展的模块中定义一个方法。这个方法应该使用
self.answer_to_my_question.define_method...创建实例方法,我这样做是因为我想实现 DirtyObjects noob 风格。 :) 但是所有这些细节对我的问题没有帮助。 -
有人试图在较低级别上执行此操作here。
标签: ruby metaprogramming