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

Ruby中如何将each方法产出的所有元素转换为数组?

Ruby 中将带 each 方法的对象转为数组的内置方法

当然有现成的内置方法可以一行实现,常用的有两种:

  • 使用 Array() 构造方法
    这是最通用的方式,只要对象实现了 each 方法,Array() 就会自动遍历它并收集所有产出元素到数组中:

    array = Array(x)
    

    举个自定义对象的例子:

    class MyList
      def each
        yield "foo"
        yield "bar"
        yield "baz"
      end
    end
    
    x = MyList.new
    array = Array(x) # => ["foo", "bar", "baz"]
    
  • 使用 to_a 方法
    如果你的对象混入了 Enumerable 模块(Ruby 内置的可枚举对象比如 Range、Hash 都默认包含这个模块),直接调用 to_a 就能转成数组:

    array = x.to_a
    

    比如用 Range 对象测试:

    x = 1..5
    array = x.to_a # => [1, 2, 3, 4, 5]
    

    注意:如果你的自定义对象只实现了 each 但没混入 Enumerable,to_a 可能无法直接使用,这时候用 Array() 更稳妥。

这两种都是 Ruby 原生的内置方法,完全满足你“不用自行实现”的需求,在任何 Ruby 项目中都可以直接使用。

内容的提问来源于stack exchange,提问作者yegor256

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:24:52