• ベストアンサー

Rubyのクラス

class Test def initialize @ary = Array.new(size){false} end def print _print end def _print print"#{@ary}" end end test = Test.new(5) test.print 上記のプログラムはエラーが出て実行できません。期待している動作は[false,false,false,false,false]です。どうしてエラーが出るか教えていただきたいです。また、解決策もよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.4

ANo2, ANo3で挙げられている部分に加え、printと_printメソッドを交互に呼び合っています。 クラスの階層関係を確かめたいコードだとした場合、 Test#_print側でKernel.printを叩くか、Test#print側でsuperを呼び出して下さい http://ideone.com/nKHyk

cheatingkonishi
質問者

お礼

ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

noname#158634
noname#158634
回答No.3

initializeメソッドにちゃんと引数つけたらどうなる? あとどうでもいいけどfalseはfalseでしかないからブロックにしても意味ない。

すると、全ての回答が全文表示されます。
  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.2

> D:/ruby/workplace/p/sam.rb:13:in `_visit': undefined method `[]=' for nil:NilClass > (NoMethodError) > from D:/ruby/workplace/p/sam.rb:8:in `visit' > from D:/ruby/workplace/p/sam.rb:35:in `<main>' > というエラーがでます。 本当ですか? sam.rb が質問文に書かれているコードですか? 8行目に visit とかないですよね?

すると、全ての回答が全文表示されます。
  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

> 上記のプログラムはエラーが出て実行できません。 質問するときはどんなエラーが出るかを書きましょう。

cheatingkonishi
質問者

補足

具体的には、 D:/ruby/workplace/p/sam.rb:13:in `_visit': undefined method `[]=' for nil:NilClass (NoMethodError) from D:/ruby/workplace/p/sam.rb:8:in `visit' from D:/ruby/workplace/p/sam.rb:35:in `<main>' というエラーがでます。

すると、全ての回答が全文表示されます。

関連するQ&A