Ruby字符串集合作为参数

时间:2014-05-23 01:32:20

标签: ruby parameters

我有一个players()方法可以返回所有玩家名称。

我想使用它作为twitter流的参数,如下所示:

@client.track(players) do |tweet|

宝石不允许,所以我必须这样做:

@client.track('player1', 'player2', 'player3') do |tweet|

但那太糟糕了,因为我有这么多球员。

这是一种将我的数组解析为字符串列表的方法吗?

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找的是*,即“splat”运算符:

players = [ "player1", "player2", "player3" ]
@client.track( *players )

# ...is equivalent to...

@client.track( "player1", "player2", "player3" )

在响应to_ary的任何对象(如数组,哈希和大多数其他可枚举对象)之前放置一个splat会将其项目转换为参数列表。它非常方便,当您探索更多Ruby代码时,您会看到很多。这是另一个例子:

a = [ 3, 4 ]

[ 1, 2 ].push( a )  # no splat
# => [ 1, 2, [ 3, 4 ] ]

[ 1, 2 ].push( *a ) # splat!
# => [ 1, 2, 3, 4 ]

您也可以直接在对象上使用它 - 而不仅仅是变量:

[ 1, 2, *[ 3, 4 ] ]
# => [ 1, 2, 3, 4 ]