如何使用`&`同时调用两个方法

时间:2017-07-07 11:38:50

标签: ruby

而不是使用&

调用块中的一个方法
objects_array.collect(&:errors)

我可以使用&同时调用两种方法吗?我想要这样的东西:

objects_array.collect(&:errors.full_messages)

有可能吗?

3 个答案:

答案 0 :(得分:2)

单次传球和速记无法做到这一点。要么两次通过

objects_array.collect(&:errors).collect(&:full_messages)

或使用完整表格。

objects_array.collect{ |obj| obj.errors.full_messages }

答案 1 :(得分:2)

  

可以吗?

不,这只是一种速记方法,而是使用阻止..

objects_array.collect { |obl| obj.errors.full_messages }

答案 2 :(得分:1)

如果您重新定义Symbol#method_missing以存储方法链,并且还使用存储的方法链重新定义Symbol#to_proc以扩展到proc,则可以。但我很确定它会引入复杂性而不是它有助于引起一些严重问题。这不值得。