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”,它将起作用。发生了什么事?
答案 0 :(得分:3)
此问题的答案Concatenating string with number in ruby概述了通过以下两种方法均可实现的两种方法:
使用.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
自动添加。