gpt4 book ai didi

ruby-on-rails - ruby instance_variable_get 返回 nil

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:39 25 4
gpt4 key购买 nike

我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com