Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中,为什么需要将整数转换为字符串来打印它?_Ruby - Fatal编程技术网

在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