4

Ruby の学習を始めたばかりで、エラーの原因がわかりません。ルビー1.9.3を使用しています

puts 'What is your favorite number?'
fav = gets 
puts 'interesting though what about' + ( fav.to_i + 1 )

in `+': can't convert Fixnum into String (TypeError)

前回の puts ステートメントでは、文字列と計算の単純な組み合わせだと思いました。私はまだそうしていますが、なぜこれがうまくいかないのか理解していません

4

2 に答える 2

13

Ruby では、多くの場合、文字列を追加 (「連結」) するのではなく、「文字列補間」を使用できます。

puts "interesting though what about #{fav.to_i + 1}?"
# => interesting though what about 43?

基本的に、 内のすべて#{}が評価され、文字列に変換され、含まれる文字列に挿入されます。これは、二重引用符で囲まれた文字列でのみ機能することに注意してください。単一引用符で囲まれた文字列では、入力したものが正確に得られます。

puts 'interesting though what about #{fav.to_i + 1}?'
# => interesting though what about #{fav.to_i + 1}?
于 2012-11-23T10:50:56.163 に答える
3

( fav.to_i + 1 )は整数を返し、Ruby は暗黙の型変換を行いません。( fav.to_i + 1 ).to_s文字列に追加できるようにするには、自分で変換する必要があります。

于 2012-11-23T10:10:57.377 に答える