我试图在一个方法中采取一个块参数,并把内容(符号数组),使其成为一个数组。例如:
def sequence(&block)
# ?
end
sequence do
:foo,
:bar,
:foobar
end # => [:foo, :bar, :foobar]
我知道在sequence
方法中使用数组作为参数会更容易,但我试图与另一个方法保持一致。
这种语法在Ruby中是不允许的,所以不幸的是这是不可能的,因为代码甚至无法通过解析器。
好吧,我没有回答确切的问题,我想你和dirk知道这一点,但是…
如果有人想要一个Array
作为参数,并且他们的搜索把他们带到了这里,Ruby确实有一个基本的功能可以为你做类似的事情:
def f *x
x
end
p f :foo,
:bar,
:foobar
# => [:foo, :bar, :foobar]
虽然您建议的语法不会传递解析器,但有一些调整:
def sequence(&block)
yield
end
sequence do [
:foo,
:bar,
:foobar
] end # => [:foo, :bar, :foobar]
sequence do _=
:foo,
:bar,
:foobar
end # => [:foo, :bar, :foobar]