2016-01-26 2 views
0

Это мой текущий код для генератора файла конфигурации IRCD, Я стараюсь, чтобы иметь возможность использовать answer_or_default для этого, и выяснить, использование HighLine::Question#gatherHighLine: Использование собрать и answer_or_default

Вот answer_or_default

a = HighLine.new($stdin, $stderr) 
connect_pingfreq = a.ask("? ", Integer) do |q| 
    q.default = 240 
    q.in = 0..300 
    # q.answer_or_default 
    # gives 
    # /var/lib/gems/2.0.0/gems/highline 
    # -1.7.8/lib/highline/question.rb:217:in 
    # `answer_or_default': wrong number of arguments (0 for 1) (ArgumentError) 
end 
# I've used it here as 
# connect_pingfreq.answer_or_default 
# But then gives the error shown 
# ? 
# /home/ken/git/shell-scripts/inspigen/generator.rb:48:in `conf': 
# undefined method `answer_or_default' for 240:Fixnum (NoMethodError) 

При использовании функции answer_or_default внутри я не слишком уверен в том, как дать ей свою «answer_string», о которой говорит документация.

А затем 240 - это ответ, но я не могу ничего с этим сделать.

Я также хотел бы изучить использование HighLine::Question#gather с использованием этого кода. Учитывая, что я не могу понять, в документации это

a = HighLine.new($stdin, $stderr) 
a.say "Your <admin> lines.." 
admin_name = a.ask "Admin Real Name? " 
admin_nick = a.ask "Admin Nick? " 
admin_email = a.ask("Admin Email? ") do |q| 
    q.validate = /\A([\w+\-].?)[email protected][a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/ 
end 

#gather должны спросить у меня 3-х линий, имя, ник и электронная почта

Либо в хэш или массив, но я считаю, что хэш-бы быть более легко читаемым.

+0

«До сих пор я не был успешным» не описывает вашу проблему. Пожалуйста, объясните, что не так с вашим кодом. Фактическое и желаемое поведение не менее –

+0

Тело вопроса исправлено – IotaSpencer

ответ

0

Для вашего первого вопроса вы можете просто получить ответ (или по умолчанию) из переменной connect_pingfreq. Не нужно звонить answer_or_default. Как это:

a = HighLine.new($stdin, $stderr) 
connect_pingfreq = a.ask("? ", Integer) do |q| 
    q.default = 240 
    q.in = 0..300 
end 

puts connect_pingfreq 

Этот выход будет либо ответ вводится пользователем или по умолчанию 240.

Смежные вопросы