我正在使用第 3 方库,我正在尝试访问类成员变量,但不幸的是还有一个同名的方法。
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
不幸的是,我无法更改它,因为它是第 3 方。
我正在使用第 3 方库,我正在尝试访问类成员变量,但不幸的是还有一个同名的方法。
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
不幸的是,我无法更改它,因为它是第 3 方。
你可以使用instance_variable_get
:
test = Test.new
test.instance_variable_get(:@var)
您可以添加其他名称的阅读器方法:
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