2013-03-03 168 views
1

我试图采取的方法的方块参数,并打开内容(符号的阵列)和它做成一个数组。例如:红宝石块到阵列

def sequence(&block) 
    # ? 
end 

sequence do 
    :foo, 
    :bar, 
    :foobar 
end # => [:foo, :bar, :foobar] 

我知道这将是容易只是有一个数组作为sequence方法的参数,但我想留在另一种方法是一致的。

回答

3

这句法不是在Ruby中不允许的,所以很遗憾这是不可能的,因为代码甚至不会让过去的解析器。

0

好了,不回答确切的问题,我想你和dirk知道这一点,但...

如果有人想一个Array作为参数,他们的搜索,导致他们在这里,红宝石确实有基本具备相似功能东西给你:

def f *x 
    x 
end 

p f :foo, 
    :bar, 
    :foobar 

# => [:foo, :bar, :foobar] 
0

虽然你建议的语法不会通过一个解析器,也有一些调整:

def sequence(&block) 
    yield 
end 

sequence do [ 
    :foo, 
    :bar, 
    :foobar 
] end # => [:foo, :bar, :foobar] 

sequence do _= 
    :foo, 
    :bar, 
    :foobar 
end # => [:foo, :bar, :foobar]