无法从方法访问数组

时间:2018-10-29 20:01:32

标签: ruby instance-variables

我有代码:

class Blah
  @hello = ["a", "b", "c"]
  puts @hello[0]

  def something()
    puts "abc"
    #puts @hello[0]
  end
end

z = Blah.new()
z.something()

puts @hello[0]

其结果为:

a
abc

如果我取消评论

#puts @hello[0]

并尝试输出数组@hello的第一个结果,即a,出现此错误:

array_2.rb:13:in `something': undefined method `[]' for nil:NilClass (NoMethodError)

为什么我不能得到结果:

a
abc
a

为什么我的代码不起作用?诸如@example之类的数组不仅应在类中访问,而且应在something方法中访问。为什么我不能在方法内访问@hello[0]?为什么@hello[0]仅可在类中访问,而不能在方法中访问?需要有人修复我的代码,以便我可以在方法中访问@array

1 个答案:

答案 0 :(得分:1)

您需要在实例方法中初始化实例变量,但是您是在类主体的范围内执行此操作的,

如果您通过@hello方法设置了initialize,它应该会按预期运行。

class Blah
  def initialize
    @hello = ["a","b","c"]
  end

  def something()
    puts @hello[0]
  end
end

Blah.new.something #=> 'a'

这种方式可以使您在实例化类时传递参数,并且每个实例的实例变量中可能存储有不同的数据。