Ruby块到数组



我试图在一个方法中采取一个块参数,并把内容(符号数组),使其成为一个数组。例如:

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]

相关内容

  • 没有找到相关文章

最新更新