类的&ruby替代<<事情

时间:2009-07-09 07:33:52

标签: ruby class

我想重写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

但遗憾的是,这不起作用:)

任何解决方案?

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

如果您将更改放在模块而不是类中,那么您可以执行

q.extend(YourModule)

e.g。覆盖valid_answer?

module QuestionCustomisations
  def valid_answer?
    # your code here
  end
end

q.extend(QuestionCustomisations)

这将仅在传递给块的对象实例中应用您的更改。