【问题标题】:HighLine: Using gather and answer_or_defaultHighLine:使用收集和 answer_or_default
【发布时间】:2016-01-26 17:28:08
【问题描述】:

这是我当前的 ircd 配置文件生成器代码, 我试图能够为此使用answer_or_default,并弄清楚HighLine::Question#gather的用途

这是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+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/
end

#gather 应该问我 3 行、姓名、昵称和电子邮件

在散列或数组中,但我相信散列会更容易阅读。

【问题讨论】:

  • “到目前为止我还没有成功”并没有描述您的问题。请解释您的代码有什么问题。至少实际与期望的行为

标签: ruby highline


【解决方案1】:

对于您的第一个问题,您可以从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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多