オブジェクト指向基礎レベル
次のプログラムを実行すると何が表示されますか?
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" を返し、puts で REx と表示されます。attr_reader は読み取り用メソッドだけを作るため、foo.a = "Ruby" のような setter は定義されません。