csvを読み込んでみた
words.csvを読み込んで「いつどこでだれがだれと何をした」を表示するプログラムを書いてみた。
csvファイルはこんな感じ。
#いつ,どこで,誰が,誰と,何をした # 子供の歌 ある日,森の中,女の子,クマさん,出会った 春の朝,山の中,クマさん,,目が覚めた 祭りの晩,ニューオリンズ,ルイジアナママ,ぼく,踊りにでかけた
ファイルを読み込む時のコード
File.open("words.csv", "r") do |file| file.each_line() do |line| if line[0] == "#" next end sentences << line.chomp().split(",") end end
each_line関数で一行ずつ読み込みます。行の先頭に「#」がついていたら読み込まず、次の行へ移ります。その下の行で「sentences << line.chomp().split(",")」があります。これはeach_line()で読み込んだ行の、改行コードを削除(chomp()より)し、","でarrayオブジェクトに分割(split())。それらをsentencesが参照するarrayオブジェクトに追加します。
このようにメソッド呼び出しの連鎖をメソッドチェインと言います。メソッドチェインは、オブジェクトを加工して別のオブジェクトを返すメソッドを連続して呼ぶ場合に使用すべきものです。ただし、長くなったり読みづらい連鎖にならないよう注意する必要があります。
さて、csvファイルを読み終えたらputsでsentencesを表示してプログラム完成です。