【发布时间】:2013-03-03 03:15:19
【问题描述】:
我正在尝试在方法中获取块参数,并将内容(符号数组)转换为数组。例如:
def sequence(&block)
# ?
end
sequence do
:foo,
:bar,
:foobar
end # => [:foo, :bar, :foobar]
我知道在 sequence 方法中只使用一个数组作为参数会更容易,但我试图与另一种方法保持一致。
【问题讨论】:
我正在尝试在方法中获取块参数,并将内容(符号数组)转换为数组。例如:
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]
【讨论】: