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]