Функция печати в рубине

Я новичок в рубине. У меня есть следующий код, который запрашивает у пользователя его имя и распечатывает его.

print 'Enter your name : '
name = gets()
print("Hey,#{name} !")

Если я введу John Doe в качестве имени, вывод будет следующим образом

Hey,John Doe
!

print В отличие от puts автоматически не выводит новую строку после вывода, но я заметил, что в приведенном выше случае все, что я ввожу после #{name}, печатается на новой строке. Почему это так?

Ответ 1

gets() возвращает новую строку, вызванную нажатием клавиши ввода. Попробуйте name = gets().chomp отрезать его.

Ответ 2

Если вы находитесь на OS X и запускаете это в irb, вы также можете ввести "John Doe", а затем дважды нажать Ctrl + d.

Я думаю, что эквивалент для окон - это control + z.

Кроме того, если вы сделали print name.inspect, вы наверняка узнаете, что name содержит новую строку - он распечатает "John Doe\n".