我想重写HighLine的几个方法来自定义我的控制台,目前我的代码看起来像这样:
cmd = ask("#{@prompt_label} #{@prompt_separator} ", @tab_completion_candidates) do |q|
q.readline = true
# rewriting the Question class to make it do what we want
class << q
HERE I WRITE MY CODE
end
end
我希望能够将我的更改与我的主控制台文件分开,所以让我说我有一个类Console :: Question包含我想在HighLine :: Console中做的所有更改,我想要能够做那样的事情:
Console::Question << q
end
但遗憾的是,这不起作用:)
任何解决方案?
感谢您的时间。
答案 0 :(得分:3)
如果您将更改放在模块而不是类中,那么您可以执行
q.extend(YourModule)
e.g。覆盖valid_answer?
module QuestionCustomisations
def valid_answer?
# your code here
end
end
q.extend(QuestionCustomisations)
这将仅在传递给块的对象实例中应用您的更改。