Ruby:没有将fixnum隐式转换为字符串



试图解决Chris Pine书中的一个问题。要求用户输入他们的姓和名,然后它应该显示两者的总字符数。

这是我想到的众多解决方案之一:

puts "First name?"
first_name = gets.chomp
puts "Last name?"
last_name = gets.chomp
total = first_name.length.to_i + last_name.length.to_i
puts 'Did you know you have ' + total + ' characters in your name ' + first_name + last_name + '?'

Ruby对String和Integer之间的区别非常严格,它不会自动为您转换。你必须问,但你可以礼貌地问:

puts "Did you know you have #{total} characters in your name #{first_name} #{last_name}?"

你也可以这样计算:

puts "Did you know you have #{first_name.length + last_name.length} characters in your name?"

#{...}插值只在"双引号"字符串中工作,但无论那个小块的结果是什么,它都会转换为字符串。单引号避免了插值,这有时很方便。

如果你想连接字符串,你必须手动转换:

"this" + 2.to_s

Length返回一个整数(不需要转换为_i),因此将代码更改为:

total = first_name.length + last_name.length

最新更新