我有一个方法
def press_button(*key_buttons)
# some interaction to send button
end
我将其与参数一起使用::shift
,:tab
,:backspace
等。我希望此方法的别名具有固定参数,以便press_shift
代表press_button(:shift)
。是否有可能做到这一点?或者,我是否必须像以下一样包装此方法:
def press_shift
press_button(:shift)
end
def press_tab
press_button(:tab)
end
def press_backspace
press_button(:backspace)
end
答案 0 :(得分:3)
我不太确定我理解你的问题,但我相信这符合你的要求:
[:shift, :tab, :backspace].each do |k|
define_method("press_#{k}") { press_button(k) }
end
现在定义了方法press_shift
,press_tab
和press_backspace
。
答案 1 :(得分:0)
我想我找到了解决自己问题的方法。 method_missing
Ruby钩子会帮助我。
def method_missing(method_name, *args)
if method_name.intern.include?('press')
argument = /_(\w*)$/.match(method_name.intern)[0]
press_button(argument.intern)
else
super
end
end