重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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]です。どうしてエラーが出るか教えていただきたいです。また、解決策もよろしくお願いします。

A 回答 (4件)

ANo2, ANo3で挙げられている部分に加え、printと_printメソッドを交互に呼び合っています。



クラスの階層関係を確かめたいコードだとした場合、
Test#_print側でKernel.printを叩くか、Test#print側でsuperを呼び出して下さい

http://ideone.com/nKHyk
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/10/27 13:12

initializeメソッドにちゃんと引数つけたらどうなる?


あとどうでもいいけどfalseはfalseでしかないからブロックにしても意味ない。
    • good
    • 0

> 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 とかないですよね?
    • good
    • 0

> 上記のプログラムはエラーが出て実行できません。



質問するときはどんなエラーが出るかを書きましょう。

この回答への補足

具体的には、
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>'
というエラーがでます。

補足日時:2011/10/26 15:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!