オブジェクト指向基礎レベル

次のプログラムを実行すると何が表示されますか?

class Foo
  attr_reader :a

  def initialize
    @a = "REx"
  end
end

foo = Foo.new
puts foo.a
  • 1REx
  • 2nil
  • 3NoMethodError が発生する
  • 4@a と表示される

解説

attr_reader :a@a を読むための getter メソッド a を定義します。initialize@a = "REx" を代入しているため、foo.a"REx" を返し、putsREx と表示されます。attr_reader は読み取り用メソッドだけを作るため、foo.a = "Ruby" のような setter は定義されません。

問題一覧へ戻る