我正在使用send
方法进行一些元编程。到目前为止,我取得了成功,因为我所采用的方法send
只接受一个论点。
例子:
client
是一个 API 客户端
@command
是client
作为 CLI 实用程序的一个选项的方法
@verb
是command
在 CLI 中作为另一个选项的方法
def command_keys
case @command
when "something"
self.command_options.slice(:some, :keys)
end
end
然后我像这样调用 API 客户端:
client.send(@command).send(@verb, command_keys)
这是可行的,因为这些方法都以 aHash
作为参数。我遇到的问题是当我需要在command_keys
. 我想知道的是处理command_keys
返回超过 1 个值的方法的最佳方法。例子:
def command_keys
case @command
when "something"
return self.command_options[:some], self.command_options[:keys]
end
end
在这种情况下,command_keys
按预期返回一个数组,但是当我尝试在send(@verb, command_options)
调用中传递它时,它将它作为一个数组传递(这显然是预期的)。那么,长话短说,是否有一些简单的方法可以轻松处理这种情况?
我知道send(@verb, argument1, argument2)
会得到我想要的结果,但我希望能够不必给我的脚本提供比它需要的更多的实现逻辑,也就是说我希望它尽可能地保持抽象。