为什么我不能打印带有整数的字符串?

时间:2020-08-05 11:48:19

标签: ruby

num1 = 2
num2 = 4
op = num1 + num2
puts "enter a number would like to multiply with 6"
num3 = gets.to_i * op
print ("its " + num3 + " man")

为什么这行不通?如果我单独将其作为“ print num3”,它将起作用。发生了什么事?

3 个答案:

答案 0 :(得分:3)

此问题的答案Concatenating string with number in ruby概述了通过以下两种方法均可实现的两种方法:

  • 字符串插值
  • 或在构造结果字符串时使用.to_s将数字更改为字符串

使用.to_s,您可以执行以下操作:

print ("its " + num3.to_s + " man")

尽管使用字符串插值可能是一种更好的方法。 在这里描述: https://ruby-doc.org/core-2.5.0/doc/syntax/literals_rdoc.html

答案 1 :(得分:1)

您无法连接Fixnum和字符串。 请这样做。

print ("its #{num3} man")

答案 2 :(得分:0)

如果我将其单独设为print num3,它将起作用。发生了什么事?

print确实可以使用其to_s方法打印任意对象,甚至是多个对象。

但是要这样做,您必须将它们作为单独参数传递:

num = 42

print('its ', num, ' man')
# its 42 man

但是,使用string interpolation更习惯:

print("its #{num} man")
# its 42 man

或使用模板字符串的printf:(%d表示十进制数字)

printf('its %d man', num)
# its 42 man

请注意,以上所有内容均不会打印换行符。如果您想要一个,则必须自己添加\n,或使用puts自动添加。