Ruby中是否存在接收完整Enumerable为参数的链式枚举方法?
Ruby 中处理整个 Enumerable 对象的链式方法
Ruby 里确实有符合你需求的方法,最常用的是 then(或者它的别名 yield_self),这两个方法的作用就是把当前调用它们的对象作为参数传递给块,正好满足你把前面链式操作生成的完整 Enumerable 传给 my_filter_function 的需求。
用法示例
把你代码里的 ??? 替换成 then 就行,示例如下:
[1,2,3] .filter { |e| e.even? } # 筛选偶数,这里得到 [2] .map { |e| e ** 2 } # 转成平方,得到 [4] .then { |full_enum| my_filter_function(full_enum) } # 把整个Enumerable传给自定义方法 .sum
补充说明
then和yield_self功能完全一致,then是 Ruby 2.6 新增的别名,写法更直观,推荐使用。- 块里的参数(比如上面的
full_enum)就是前面所有链式操作完成后的完整集合,你可以直接把它传给你的辅助方法。 - 如果你的
my_filter_function返回的也是一个 Enumerable,后面就能继续链式调用sum这类方法,完全符合你的代码结构。
内容的提问来源于stack exchange,提问作者arrwags
相关产品推荐
相关产品推荐

