我正在尝试在方法中采用块参数,并将内容(符号数组)转换为数组。例如:
def sequence(&block)
# ?
end
sequence do
:foo,
:bar,
:foobar
end # => [:foo, :bar, :foobar]
我知道在方法中只使用一个数组作为参数会更容易sequence
,但我试图与另一种方法保持一致。
这种语法在 Ruby 中是不允许的,所以不幸的是这是不可能的,因为代码甚至无法通过解析器。
好吧,没有回答确切的问题,我想你和德克知道这一点,但是......
如果有人想要一个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]