You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:20:58