解決済み

Rubyについて質問です

  • すぐに回答を!
  • 質問No.7479213
  • 閲覧数53
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 50% (3/6)

Rubyについて質問です

class Document

#省略

def each_word
word_array = words
index = 0
while index < words.size
yield(word_array[index])
index += 1
end
end
end

d = Document.new('Truth', 'Gump', 'Life is like a box of...')
d.each_word { |word| puts word }

このような例題があるのですが、
このまま実行しても引数エラーがでてしまいます。
「省略」のところをどのように追加すれば実行できるようになりますか?

参考書:ELOQUENT RUBYの中の例題です

ちなみに実行結果は以下の通りです
Life
is
like
a
box
of
...


どうかよろしくお願いいたします

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

  • 回答No.1

ベストアンサー率 77% (490/633)

まず、
d = Document.new('Truth', 'Gump', 'Life is like a box of...')
でエラーが出るはずです。
#省略 のところに
def initialize(a, b, c)
end
のようにいれます。

つぎに
word_array = words
のwordsが未定義のエラーがでます。
出力から推測するに
["Life", "is", "like", "a", "box", "of", "..."]
が入っていないといけないのですが、メソッド外からデータを受け取る必要があります。
変数名を@wordsとしてインスタンス変数にします。

@wordsの中身はdef initialize(a, b, c)のcから作られますので、
def initialize
の中で、@words=????????(ここは考えてみて)
として代入すればokです。
お礼コメント
tarutaru1023

お礼率 50% (3/6)

なるほど、ありがとうございます!!!!

また、このプログラムはなぜ最初の'Truth', 'Gump'は出力されないでのしょうか?
お時間があれば、こちらの回答の方もよろしくお願いいたします><
投稿日時 - 2012-05-19 23:29:36
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ