Почему я не могу напечатать строки с целыми числами? - PullRequest
1 голос
/ 05 августа 2020
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 ]

3 голосов
/ 05 августа 2020

Ответы на этот вопрос, Конкатенация строки с номером в 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 голос
/ 05 августа 2020

Вы не можете объединять Fixnum и строку. Пожалуйста, сделайте это так.

print ("its #{num3} man")
0 голосов
/ 05 августа 2020

Если у меня только print num3, он будет работать. Что происходит?

print действительно может печатать произвольные объекты, используя свои to_s методы, даже несколько объектов.

Но для этого вы должны передать их как отдельные аргументы:

num = 42

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

Однако, более идиоматично c использовать интерполяцию строк :

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

или printf, который принимает строку шаблона: (%d означает десятичное число)

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

Обратите внимание, что ни один из вышеперечисленных не будет печатать новую строку. Если вам нужен один, вы должны добавить \n самостоятельно или использовать puts, который добавляет его автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...