IOクラスのメソッドである readlines は、その名の通りストリームを改行文字で区切って読み出し、配列に格納してくれますが、期待した動作と少し違っていたので戸惑ってしまいました。
例えば test.txt が
banana apple orange
となっているとします。
fruits = IO.readlines( 'test.txt' ) if fruits.include? 'banana' then p 'The monkeys will be delighted.' else p 'Sorry, monkeys.' end
配列 fruits に文字列 banana が含まれていると The monkeys will be delighted. とプリントされるはずですが、結果は Sorry, monkeys. となります。
なぜかというと、fruit[0] は’banana’ではなく’banana\n‘だからです。
改行文字を取り除いて配列に格納するには、
fruits = IO.read( "test.txt" ).split("\n")
などとしなければなりません。
—
ちなみに、Python の readlines() も同じように改行文字を含めるようです。