使用yield_self
,可以预先在方法链中放置一元方法的参数。因此,给出:
Foo = Struct.new(:one_arg)
这一行:
Foo.new("x")
相当于该行:
"x".yield_self(&Foo.method(:new))
提供了一个方法,它接受多个参数和一个数组,每个元素对应一个方法的参数,这个类比不起作用。因此,给出:
Foo = Struct.new(:x, :y)
args = [:first_arg, :second_arg]
这一行:
Foo.new(*args)
不等同于:
args.yield_self(&Foo.method(:new))
相当于:
Foo.new(args)
但我宁愿写那样的东西。有没有惯用的方法来实现这种阵列的喷射?
答案 0 :(得分:2)
我认为这是你能做的最好的事情:
args.yield_self {|ary| Foo.new(*ary)}
这是一条管道,好吧。是否值得所有额外的代码?你决定了。