【Ruby】インスタンス毎に値を共有できるクラス変数を作成する
Ruby

【Ruby】インスタンス毎に値を共有できるクラス変数を作成する

作成日:2022年07月29日
更新日:2022年07月29日

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

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

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

ruby
class Fluit
@@fluit_number = 0
end

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

ruby
class Fluit
@@fluit_number = 0
def initialize(product)
@product = product
@@fluit_number += 1
end
end

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

ruby
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

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

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

ruby
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 ずつ増えました。

© 2024あずきぱんウェブスタジオ