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

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の後に『:』を入力するとエラーが発生するので、注意してください。

class Fluit
  attr_reader :product

  def initialize(product)
    @product = product
  end
end

banana = Fluit.new("バナナ")
puts banana.product

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

image3

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

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

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

class Fluit
  attr_reader :product

  def initialize(product)
    @product = product
  end

end

banana = Fluit.new("バナナ")
puts banana.product = "りんご"

image4

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

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

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

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

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

class Fluit
  attr_writer :product

  def initialize(product)
    @product = product
  end
end

banana = Fluit.new("バナナ")
banana.product = "りんご"
puts banana.product

image6

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

class Fluit
  attr_accessor :product

  def initialize(product)
    @product = product
  end
end

banana = Fluit.new("バナナ")
banana.product = "りんご"
puts banana.product

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

image7

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

ブログ一覧