I was addicted when I wanted to refer to the value set in initialize in the class method
class Hoge
  attr_accessor :aa
  def initialize
    @aa = 'aa'
  end
  def self.bb
    @aa
  end
end
p Hoge.bb
# => nil
I haven't set the value because I haven't done Hoge.new, So nil is returned
class Hoge
  attr_accessor :aa
  def initialize
    @aa = 'aa'
  end
  def bb
    @aa
  end
end
hoge = Hoge.new
p hoge.bb
You can refer to the value by using the instance method (it is natural) When you want to use a value in a class method Let's set the value directly to the instance variable without using initialize.
class Hoge
  @aa = 'aa'
  def self.bb
    @aa
  end
end
p Hoge.bb
#=> "aa"
Whether to use it in a class method or an instance method I was addicted to learning that I had to be aware of the contents of initialize according to the purpose.
Dedicated every day
Recommended Posts