将数组拆分为逗号分隔的值列表

时间:2013-10-08 02:09:24

标签: ruby

我正在使用send方法进行一些元编程。到目前为止,我已经取得了成功,因为我send的方法只能采用一个参数。

示例:

client是一个API客户端

@commandclient上作为CLI实用程序选项的方法

@verbcommand上的一种方法,作为CLI中的另一个选项

def command_keys
  case @command
  when "something"
    self.command_options.slice(:some, :keys)
  end
end

然后我像这样调用API客户端:

client.send(@command).send(@verb, command_keys)

这是有效的,因为这些方法都以Hash为参数。我遇到的问题是当我需要在command_keys中发送多个参数时。我想知道的是处理返回1个以上值的command_keys方法的最佳方法。例如:

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)会得到我想要的结果,但我希望能够不再给我的脚本提供超出需要的实现逻辑,也就是说我希望它能保留尽可能抽象。

1 个答案:

答案 0 :(得分:1)

使用splat。您可能需要重新考虑一下代码,但类似于:

client.send(@command).send(@verb, *all_the_args)