Ruby如何简化循环添加对象到数组并直接返回数组的代码?
简化Ruby条形码数组创建的方法
当然有巧妙的办法!Ruby的语法糖和Enumerable模块正好能帮你把这段代码简化到1行,还能去掉多余的中间变量,让代码更简洁直观。
这里有两种常用的简洁写法:
方法一:使用Array.new的块初始化
def create_barcodes(count) Array.new(count) { Barcode.create } end
Array.new接受数量参数和块的时候,会自动执行count次块内代码,把每次的返回值作为数组元素,最后直接返回这个新数组——完全不需要手动创建数组、push元素再返回,一步到位。
方法二:用times.map链式调用
def create_barcodes(count) count.times.map { Barcode.create } end
count.times本身返回一个可枚举对象,直接链式调用map就能把每次循环执行Barcode.create的结果收集成数组,最后自动返回这个数组,逻辑和你的原代码很接近,但省去了中间变量的声明和push操作。
这两种写法都保持了代码的可读性,同时实现了你想要的“直接返回数组”的需求,选哪种都可以,看你更习惯哪种风格~
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

