Часто я делаю следующее:
print "Input text: "
input = gets.strip
Существует ли корректный способ сделать это в одной строке? Что-то как:
puts "Input text: #{input = gets.strip}"
Проблема с этим состоит в том, что это ожидает входа прежде, чем отобразить подсказку. Какие-либо идеи?
Обратите внимание на highline :
require "highline/import"
input = ask "Input text: "
Я думаю, что лучше всего будет пойти что-то вроде того, что предложил Марк-Андре, но зачем вводить целую тонну кода, если вы можете просто определить двухстрочную функцию в вверху любого скрипта, который вы собираетесь использовать:
def prompt(*args)
print(*args)
gets
end
name = prompt "Input name: "
Проблема с предложенным вами решением заключается в том, что строку, которую нужно напечатать, нельзя построить, пока ввод не будет прочитан, удален и назначен. Вы можете разделить каждую строку точкой с запятой:
$ ruby -e 'print "Input text: "; input=gets.strip; puts input'
Input text: foo
foo