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

时间:2016-11-03 06:34:09

标签: ruby

试图解决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 + '?'

2 个答案:

答案 0 :(得分:3)

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

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

你也可以这样做:

#{...}

"this" + 2.to_s 插值仅适用于“双引号”字符串,但无论该小块的结果是什么,它都会转换为字符串。单引号避免插值,这有时很方便。

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

i.fa {
  line-height: 100%;
}

答案 1 :(得分:0)

Length返回一个整数(无需转换为to_i),因此请将代码更改为:

total = first_name.length + last_name.length