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

Crystal中使用each_char.map如何获取与Ruby一致的数组输出?

原因说明

Crystal 和 Ruby 在迭代器的设计上存在差异:

  • Ruby 中 each_char 调用后返回的是立即执行的枚举对象,调用map会直接遍历所有元素生成结果数组
  • Crystal 中 each_char 默认返回惰性迭代器,对惰性迭代器调用map仍然会返回迭代器实例,不会立即执行计算,也就不会直接生成数组

解决方法

只需要在map之后调用to_a方法消费迭代器,将计算结果转为数组即可,修改后的代码如下:

word = "NUMBER"
b = word.each_char.map { 'x' }.to_a
p b

运行后输出结果为 ["x", "x", "x", "x", "x", "x"],和 Ruby 运行结果完全一致。

如果你的需求只是生成和字符串长度一致的相同元素数组,还可以用更高效的写法:

word = "NUMBER"
b = Array.new(word.size, 'x')
p b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:24:00