【Ruby】クラスのinitializeメソッドで作成したインスタンスを、外部で読み書きする
Ruby

【Ruby】クラスのinitializeメソッドで作成したインスタンスを、外部で読み書きする

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

クラスの initialize メソッドで作成したインスタンスを、外部で読み込みます。

ruby
class Fluit
def initialize(product)
@product = product
end
def fluit
@product
end
end
banana = Fluit.new("バナナ")
puts banana.fluit

image2

上のコードでも読み取ることができるのですが、attr_readerを使用すると、より簡単に記述することができます。

インスタンスを外部で読み込む

initializeメソッドの上に、attr_readerと入力し、スペース後『:インスタンス名』を入力します。

attr_readerの後に『:』を入力するとエラーが発生するので、注意してください。

ruby
class Fluit
attr_reader :product
def initialize(product)
@product = product
end
end
banana = Fluit.new("バナナ")
puts banana.product

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

image3

設定したインスタンスを表示することができました。

インスタンスを外部で書き込む

通常、インスタンスを外部で書き込むと、エラーが発生します。

ruby
class Fluit
attr_reader :product
def initialize(product)
@product = product
end
end
banana = Fluit.new("バナナ")
puts banana.product = "りんご"

image4

インスタンスを外部で書き込むには、attr_writerを使用します。

ruby
class Fluit
attr_writer :product
def initialize(product)
@product = product
end
def fluit
puts @product
end
end
banana = Fluit.new("バナナ")
banana.product = "りんご"
banana.fluit

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

image5

書き換えた後のりんごが出力されました。

インスタンスを外部で読み書きする

書き換えたインスタンスをそのまま外部で読み込もうとするとエラーが発生します。

ruby
class Fluit
attr_writer :product
def initialize(product)
@product = product
end
end
banana = Fluit.new("バナナ")
banana.product = "りんご"
puts banana.product

image6

インスタンスを外部で読み書きするには、attr_accessorを使用します。

ruby
class Fluit
attr_accessor :product
def initialize(product)
@product = product
end
end
banana = Fluit.new("バナナ")
banana.product = "りんご"
puts banana.product

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

image7

書き換えたインスタンスを読み込むことができました。

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