即时重写ruby类

时间:2009-07-07 07:18:55

标签: ruby highline

我正在使用HighLine编写我的控制台应用程序,我想修改HighLine :: Question :: in_range!功能,以便标签完成保持激活状态,但高线不打扰检查键入的单词是否在范围内。

所以,假设我有一个标签完成列表,例如%w {app1,app2,app3}

我希望能够在我的控制台中执行此操作:

app1 -option1 value1 -option2 value2

根据我对HighLine中的代码的理解,似乎我需要传递in_range!检查,以便该函数需要返回true。

我不想在其文件中直接修改代码源HighLine。所以我正在寻找一种能够在我自己的代码中动态修改或重写该功能的解决方案。有没有解决办法来做我正在寻找的事情?

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

1 个答案:

答案 0 :(得分:4)

如果您要修改特定in_range?对象Question的{​​{1}}方法,则可以

x

如果要为所有 class << x def in_range? true end end 个对象修改它:

Question

但是,我想知道你是否真的需要这样做。我认为您只需在问题中将class Question def in_range? true end end abovebelow设置为in即可轻视nil支票。