我最近遇到了一个概念性的ruby问题,即通过类而不是匹配的类方法访问类实例变量。例如......
class Test
@foo = nil
def self.foo foo
@foo = foo
end
end
如何在不重命名@foo
的情况下从Test
访问self.foo
?显然有很简单的方法,但这更像是一个功能性的Ruby问题,而不是实际的问题。
答案 0 :(得分:3)
使用Module#class_eval
或Object#instance_variable_get
。
class Test
@foo = nil
def self.foo foo
@foo = foo
end
end
Test.foo(12)
Test.class_eval('@foo') # => 12
Test.instance_variable_get('@foo') # => 12
答案 1 :(得分:0)
我更明确地命名了setter并提供了一个明确的类getter ...
@foo = nil
def self.foo=(foo)
@foo = foo
end
def self.foo
@foo
end