ここでは簡単な Ruby プログラムを書いてみます。プログラムにユーザーのお気に入りの番号を尋ねさせてから、1 つ大きい新しいお気に入りの番号を提案させようとしています。以下のコードの何が問題になっていますか?
puts "hey, whats your favorite number?"
favnumber = gets.chomp
newfavnumber = favnumber.to_i + 1
puts "how about " + newfavnumber "?"
ここでは簡単な Ruby プログラムを書いてみます。プログラムにユーザーのお気に入りの番号を尋ねさせてから、1 つ大きい新しいお気に入りの番号を提案させようとしています。以下のコードの何が問題になっていますか?
puts "hey, whats your favorite number?"
favnumber = gets.chomp
newfavnumber = favnumber.to_i + 1
puts "how about " + newfavnumber "?"
puts "how about " + newfavnumber "?"
まず第一に、おそらくそこの+
前にが欲しかったでしょう"?"
。これが現在書かれている方法では、 として解析されputs("how about " + newfavnumber("?"))
ます。つまり、 という関数を呼び出していますがnewfavnumber
、これは明らかに望んでいるものではありません。
ただし、puts "how about " + newfavnumber + "?"
おそらく意図したとおりに変更しても、まだ機能しません。newfavnumber
は数値で"how about "
あり、文字列です。Ruby では、文字列に数字を追加することはできません。これを修正するには、文字列に変換するようにto_s
要求できます。newfavnumber
これを記述するより良い方法は、文字列補間を使用することです: puts "how about #{newfavnumber}?"
. to_s
この方法では、内部で任意のタイプを使用できるため、呼び出す必要はありません#{}
。
+
afternewfavnumber
と文字列への変換がありません。
puts "how about " + newfavnumber.to_s + "?"