【发布时间】:2026-01-06 20:10:01
【问题描述】:
可以通过以下方式从 Ruby 对象访问singleton class:
some_object.singleton_class
是否可以做相反的操作:在单例类中访问原始对象?
class << some_object
# how to reference some_object without actually typing some_object?
end
我想干这个method:
class Example
PARENTS = []
class << PARENTS
FATHER = :father
MOTHER = :mother
PARENTS.push(FATHER, MOTHER)
end
end
并尝试用更通用的东西替换类中的PARENTS。
【问题讨论】:
-
还有
singleton_class?,所以单例类很清楚它的特殊地位。 -
"没有实际输入 some_object" – 更糟糕的是:如果
some_object是一个局部变量,它就没有在class << some_object块中定义。尝试在块中引用它会导致NameError。
标签: ruby metaprogramming