0

我正在使用第 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 方。

4

2 回答 2

2

你可以使用instance_variable_get

test = Test.new
test.instance_variable_get(:@var)
于 2015-12-11T20:16:42.260 回答
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
于 2015-12-11T20:25:39.757 回答