Ruby - получает проблему

В настоящее время я изучаю рубин, и я не знаю, делаю ли я что-то не так или компилятор, но этот код:

puts "Name?"
name = gets
puts "Welcome " + name

Выходы:

#blank line waiting for input, if gotten input
Prints input, Name? And Welcome Name

Я хочу, чтобы он делал что-то вроде ввода python («Имя?»)


person oguh43    schedule 11.12.2019    source источник
comment
Я не знаю, как вы могли получить такой результат, но я думаю, что вам нужны два оператора в Ruby: print "Name? ", за которым следует name = gets. Обратите внимание, что если пользователь вводит "Bob" (с последующим нажатием клавиши Enter), name будет установлено равным "Bob\n". Если вам не нужен символ новой строки, обычно пишут name = gets.chomp, что устанавливает name равным "Bob".   -  person Cary Swoveland    schedule 11.12.2019


Ответы (1)


Вы можете написать свой собственный метод input, эквивалентный Python:

def input(prompt)
  print(prompt)   # Output prompt
  $stdout.flush   # Flush stdout buffers to ensure prompt appears
  gets.chomp      # Get user input, remove final newline with chomp
end

Теперь мы можем попробовать:

name = input('What is your name? ')
puts "Welcome #{name}"

Для получения дополнительной информации об используемых методах здесь. Смотрите это:

person Casper    schedule 11.12.2019
comment
Есть ли способ сделать это проще? Но все равно большое спасибо, именно то, что мне было нужно :) - person oguh43; 12.12.2019
comment
Самый простой фрагмент кода, который работает, если вы можете принять новую строку после подсказки: puts 'Name?'; name = gets.chomp; puts "Welcome #{name}". - person Casper; 12.12.2019
comment
Это, к сожалению, производит Bob Name? Welcome Bob Process finished. - person oguh43; 12.12.2019
comment
Вы запускаете это в IDE? Попробуйте в своей консоли. Я не думаю, что IDE подходит для такой обработки пользовательского ввода. т.е. это пахнет проблемой IDE, а не проблемой Ruby. - person Casper; 12.12.2019
comment
Да... Я запускаю его в декодере на Android: D, но на ПК он должен работать, как вы сказали ранее? - person oguh43; 12.12.2019
comment
Да. Он отлично работает в консоли как на Windows, так и на Linux/OSX. - person Casper; 12.12.2019