Ruby将字符串和整数放在同一行

时间:2012-11-23 10:07:46

标签: ruby-on-rails ruby puts

我刚开始学习Ruby并且不确定导致错误的原因。我正在使用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)

在我最后一次发表声明中,我认为它是字符串和计算的简单组合。我仍然这样做,但只是不明白为什么这不起作用

2 个答案:

答案 0 :(得分:8)

在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}?

答案 1 :(得分:3)

( fav.to_i + 1 )返回一个Integer,ruby不进行隐式类型转换。您必须通过执行( fav.to_i + 1 ).to_s来自行转换它才能将其添加到字符串中。