Ruby块到数组
我试图在一个方法中获取一个块参数,并将内容(符号数组)转换为一个数组。例如:Ruby块到数组,ruby,lambda,block,proc,Ruby,Lambda,Block,Proc,我试图在一个方法中获取一个块参数,并将内容(符号数组)转换为一个数组。例如: def sequence(&block) # ? end sequence do :foo, :bar, :foobar end # => [:foo, :bar, :foobar] 我知道在sequence方法中使用数组作为参数会更容易,但我正在尝试与另一种方法保持一致。Ruby中不允许使用这种语法,因此很遗憾,这是不可能的,因为代码甚至无法通过解析器。好的,没有回答确切的问题,我想
def sequence(&block)
# ?
end
sequence do
:foo,
:bar,
:foobar
end # => [:foo, :bar, :foobar]
我知道在
sequence
方法中使用数组作为参数会更容易,但我正在尝试与另一种方法保持一致。Ruby中不允许使用这种语法,因此很遗憾,这是不可能的,因为代码甚至无法通过解析器。好的,没有回答确切的问题,我想象你知道这一点,但是
如果有人想要一个数组
作为一个参数,并且他们的搜索将他们引导到了这里,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]