Ruby で、インスタンス毎に値を共有できる、クラス変数を作成します。

今回は、インスタンスが作成される度、値が 1 ずつ増えるクラス変数を作成します。

クラス変数を作成するには、変数名の前に『@@』を付けます。

class Fluit
  @@fluit_number = 0
end

initializeの中に、@@fluit_numberが 1 ずつ増えるようにします。

class Fluit
  @@fluit_number = 0

  def initialize(product)
    @product = product
    @@fluit_number += 1
  end
end

puts を使い、出力しましょう。

class Fluit
  @@fluit_number = 0

  def initialize(product)
    @product = product
    @@fluit_number += 1
  end

  def fluit
    puts "#{@@fluit_number}: #{@product}"
  end
end

banana = Fluit.new("バナナ")
banana.fluit

では、ターミナルで実行すると、

image2

クラス変数とインスタンス変数が出力されました。

さらにりんごのインスタンスを作成してみると、

class Fluit
  @@fluit_number = 0

  def initialize(product)
    @product = product
    @@fluit_number += 1
  end

  def fluit
    puts "#{@@fluit_number}: #{@product}"
  end
end

banana = Fluit.new("バナナ")
banana.fluit

banana = Fluit.new("りんご")
banana.fluit

image3

クラス変数が保持され、インスタンスが作成される度に 1 ずつ増えました。

ブログ一覧