我正在使用第三方库,我试图访问一个类成员变量但不幸的是还有一个同名的方法。
class Test
attr_writer :var
def var
"some other stuff that is not var"
end
end
test = Test.new()
# Returns result of function but I need variable contents
test.var
不幸的是,我不能改变它,因为它是第三方。
答案 0 :(得分:2)
您可以使用instance_variable_get
:
test = Test.new
test.instance_variable_get(:@var)
答案 1 :(得分:0)
您可以添加其他名称的阅读器方法:
class Test
def var_reader
@var
end
end
这可能比直接使用instance_variable_get更好,如果你不止一次需要它或者可能需要一些额外的逻辑
在ruby-2.1 +上,通过改进可以更加优雅:
module TestRefinement
refine Test do
def var_getter
@var
end
end
end
using TestRefinement
a.var_getter