Один лайнер в Ruby для отображения подсказки, быть введенным, и присваивающий переменной?

Часто я делаю следующее:

print "Input text: "
input = gets.strip

Существует ли корректный способ сделать это в одной строке? Что-то как:

puts "Input text: #{input = gets.strip}"

Проблема с этим состоит в том, что это ожидает входа прежде, чем отобразить подсказку. Какие-либо идеи?

76
задан Jarsen 22 May 2010 в 20:53
поделиться

3 ответа

Обратите внимание на highline :

require "highline/import"
input = ask "Input text: "
76
ответ дан 24 November 2019 в 11:08
поделиться

Я думаю, что лучше всего будет пойти что-то вроде того, что предложил Марк-Андре, но зачем вводить целую тонну кода, если вы можете просто определить двухстрочную функцию в вверху любого скрипта, который вы собираетесь использовать:

def prompt(*args)
    print(*args)
    gets
end

name = prompt "Input name: "
73
ответ дан 24 November 2019 в 11:08
поделиться

Проблема с предложенным вами решением заключается в том, что строку, которую нужно напечатать, нельзя построить, пока ввод не будет прочитан, удален и назначен. Вы можете разделить каждую строку точкой с запятой:

$ ruby -e 'print "Input text: "; input=gets.strip; puts input'
Input text: foo
foo
4
ответ дан 24 November 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: