2009-07-07 50 views
0

我使用HighLine编写我的控制台应用程序,我想修改HighLine :: Question :: in_range!函数,以便选项卡完成保持激活状态,但是高线不检查输入的单词是否在范围内。动态地重写一个ruby类

所以我们可以说我有一个标签完成列表就像%W {APP1,APP2,APP3}

我希望能够做到,在我的控制台:

APP1 -option1值1 - option2 value2

从我从HighLine的代码中了解到的情况看来,我需要通过in_range!检查,以便函数需要返回true。

我不想修改以直接在其文件中直接编码源HighLine。所以我正在寻找一种解决方案,以便能够在我自己的代码中即时修改或重写该函数。有没有解决方案来做我想找的?

感谢您的时间,我希望我已经清楚地问了我的问题。

回答

4

如果你想修改in_range?方法为特定Question对象x,你可以做

class << x 
    def in_range? 
    true 
    end 
end 

如果要修改它所有Question对象:

class Question 
    def in_range? 
    true 
    end 
end 

然而,我想知道你是否真的需要这样做。我想你可以简单地在你的问题中设置above,belowinnil以简化in_range?检查。

+0

谢谢你的回答,解决了我的问题:) – Benjamin 2009-07-07 10:11:01