'+' не может преобразовать Fixnum в String (TypeError)

Я ударил по ошибке "не могу преобразовать Fixnum в String (TypeError)", и пока он кажется достаточно простым, я не уверен, как обойти его. Я думал, что моя логика звучит - преобразовать введенную строковую переменную в целое число, а затем выполнить основную операцию, но, видимо, мне не хватает ключевого бита информации.

puts 'What is your favourite number?'
favenum = gets.chomp
better = favenum.to_i + 1
puts 'Yeah '+favenum+' is nice enough but '+better+' is bigger and better by far! Think on.'    

Попробовали найти ответ, но примеры одной и той же ошибки вне нашего рудиментарного рубинового опыта в настоящее время.

Ответы

Ответ 1

Ruby (в отличие от некоторых других языков) не бросает объекты в строки, когда они являются операндами в методе String#+. Либо введите строку вручную:

puts 'Yeah ' + favenum.to_s + ' is nice enough but ' + better.to_s + ' is bigger and better by far!'

или использовать интерполяцию строк (обратите внимание на двойные кавычки):

puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far!"

Ответ 2

Попробуйте использовать интерполяцию строк, например:

puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far! Think on."

Ответ 3

На основе учебного пособия вы следуете

puts 'Please enter your favourite number: '
number = gets.chomp
imp = number.to_i + 1
puts 'I\'d say '.to_s + imp.to_s + ' is a much better number.'

Производит "правильный" результат на уровне новичков.