1

我正在尝试在方法中采用块参数,并将内容(符号数组)转换为数组。例如:

def sequence(&block)
  # ?
end

sequence do
  :foo,
  :bar,
  :foobar
end # => [:foo, :bar, :foobar]

我知道在方法中只使用一个数组作为参数会更容易sequence,但我试图与另一种方法保持一致。

4

3 回答 3

3

这种语法在 Ruby 中是不允许的,所以不幸的是这是不可能的,因为代码甚至无法通过解析器。

于 2013-03-03T03:21:38.113 回答
0

好吧,没有回答确切的问题,我想你和德克知道这一点,但是......

如果有人想要一个Array作为参数并且他们的搜索将他们带到这里,Ruby 确实有一个基本功能可以为您做类似的事情:

def f *x
  x
end

p f :foo,
    :bar,
    :foobar 

# => [:foo, :bar, :foobar]
于 2013-03-03T04:33:53.357 回答
0

虽然您建议的语法不会通过解析器,但有一些调整:

def sequence(&block)
  yield
end

sequence do [
  :foo,
  :bar,
  :foobar
] end # => [:foo, :bar, :foobar]

sequence do _= 
  :foo,
  :bar,
  :foobar
end # => [:foo, :bar, :foobar]
于 2013-03-03T05:45:26.627 回答