我有一个players()
方法可以返回所有玩家名称。
我想使用它作为twitter流的参数,如下所示:
@client.track(players) do |tweet|
宝石不允许,所以我必须这样做:
@client.track('player1', 'player2', 'player3') do |tweet|
但那太糟糕了,因为我有这么多球员。
这是一种将我的数组解析为字符串列表的方法吗?
答案 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 ]