'+' не может преобразовать 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.'
Производит "правильный" результат на уровне новичков.