在Ruby中,为什么需要将整数转换为字符串来打印它?
帮助我理解为什么这不起作用:在Ruby中,为什么需要将整数转换为字符串来打印它?,ruby,Ruby,帮助我理解为什么这不起作用: puts 'What\'s your favorite number?' number = gets.chomp newnumber = number.to_i + 5 puts 'I think you really mean ' + newnumber + ' right?' 为什么这一个会: puts 'What\'s your favorite number?' number = gets.chomp newnumber = number.to_i + 5
puts 'What\'s your favorite number?'
number = gets.chomp
newnumber = number.to_i + 5
puts 'I think you really mean ' + newnumber + ' right?'
为什么这一个会:
puts 'What\'s your favorite number?'
number = gets.chomp
newnumber = number.to_i + 5
puts 'I think you really mean ' + newnumber.to_s + ' right?'
我不明白为什么我必须将“newnumber”整数转换成字符串。它不应该自动打印成字符串吗
还有。。。如果这行得通的话
puts 'What\'s your favorite number?'
number = gets.chomp
puts number.to_i + 5
为什么我不能这么做
puts 'What\'s your favorite number?'
number = gets.chomp
puts 'I think you really mean ' + number.to_i + 5 + ' right?'
我不确定,但认为康卡特有这个问题。当您尝试执行以下操作时: number.to_i+5 Ruby只需计算2个整数的和并打印出来 当您尝试执行以下操作时: “我想你真的是指+number.to_I+5+”对吗? 您强制ruby解释器计算字符串和整数之和,ruby不知道如何计算它 此外,当您尝试执行以下操作时: “我想你真的是指“+newnumber.to”+”对吧? 雇员再培训局只需按此字符串
是的,很抱歉我的英语很差。:)
print
和put
无需将数字转换为字符串。在本例中,问题是您试图将数字添加到字符串中。这句话:
'I think you really mean ' + newnumber + ' right?'
必须在put
接收其参数之前进行求值。无法将数字添加到字符串中,原因是尝试时会出现错误:
TypeError: no implicit conversion of Fixnum into String
不过,您可以这样做:
puts newnumber
如果要在输出时获得隐式类型转换,请使用插值:
puts "I think you really mean #{newnumber} right?"
Ruby将在newnumber
上自动调用
请注意,必须在字符串周围使用“
双引号”
,因为插值不会发生在单引号字符串中。puts
可以同时接受整数或字符串参数,甚至可以同时接受这两个参数:
puts "hello number ", 4
# hello number
# 4
+
及其各种重载可以接受字符串+字符串(串联)或数字+数字(加法),但ruby没有接受字符串+数字的重载版本。是的,许多其他语言(如JavaScript等)都有,但ruby选择了不这样做
这应该解决你问题中的每一个问题;如果不清楚,请告诉我是否可以澄清。顺便说一句,如果不清楚,我的计划目标是简单地要求输入一些数字,然后修改数字,然后打印回修改后的数字。你需要更清楚地理解“工作”是什么意思。您期望得到什么样的输出?您实际看到了什么?因为不同的语言在如何工作方面有不同的理念。需要注意的是,Ruby倾向于使用双引号进行字符串插值。您可以执行“hello world#{newnumber}”,它会将值转换为字符串。您还可以执行以下操作“您最喜欢的数字是什么?”,注意,您不再需要转义单引号。您还可以使用printf
,它的格式字符串与C:printf“我认为您真正的意思是%d,对吗?\n”,newnumber