我的 instance_variable_get 方法有问题,因为它总是用我的对象实例之一返回 nil 对象。 这是我的代码:
logger.info "ASDF: " + @d_tree.inspect
logger.info "ASDF: " + @d_tree.instance_variable_get(:@content);
输出是:
ASDF: #<DTree id: 11, parent_id: nil, content: "bababababa", subsidiary_info: "", deep_info: "blabla", title: "hello", direction: 1, created_at: "2010-10-26 19:27:32", updated_at: "2010-11-01 23:14:31", color: 2, cell_color: 2, howtoinfo: "howtoinfooo", textinfo: "textInfooo", locationinfo: "locationInfoooo", productinfo: "productinfoooo">
TypeError (can't convert nil into String):
/app/controllers/d_trees_controller.rb:38:in `+'
根据检查对象似乎没问题,但 instance_variable_get 返回一个 nil 对象
感谢您的帮助!
最佳答案
instance_variable_get(arg)
如果没有设置实例变量,它应该返回实例变量的值或者nil。
例如
我们定义了下面的类
class Velpradeep
def initialize(mark1, mark2)
@m, @s = mark1, mark2
end
end
在创建类对象的过程中
obj = Velpradeep.new(98,96)
然后我们可以使用以下方法访问实例变量:
irb(main):046:0> obj.instance_variable_get(:@m)
=> 98
访问初始化方法中定义的未定义实例变量
irb(main):047:0> obj.instance_variable_get(:@p)
=> nil # provides nil bcz the instance variable is not defined
如果你想在你需要设置实例变量之前访问变量
instance_variable_set()
例子:
irb(main):048:0> obj.instance_variable_set(:@p, 99)
=> 99
然后我们就可以使用了,它会返回实例变量的值....
irb(main):049:0> obj.instance_variable_get(:@p)
=> 99
关于ruby-on-rails - ruby instance_variable_get 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4078321/