Ruby数组初始化默认值及空数组遍历的最简洁实现方法
Ruby数组相关问题解答
1. 初始化至少包含一个默认值的最简洁方式
最直接简洁的方式是使用数组字面量直接定义:
default_array = ["foo"]
如果需要生成多个相同默认值的数组(比如3个"foo"),可以用:
Array.new(3, "foo") # => ["foo", "foo", "foo"]
注意:如果默认值是哈希、数组这类引用类型,
Array.new(n, obj)会让所有元素指向同一个对象,此时建议用块形式避免引用共享:Array.new(3) { {"key" => "value"} } # 每个哈希都是独立对象
2. 一行代码实现“空数组补默认值后遍历”
分两种场景处理:
场景1:不修改原数组,仅临时使用默认值遍历
用presence方法(返回自身除非为空/ nil)配合逻辑或||生成临时数组,再链式调用遍历:
(object.initial_array.presence || ["foo"]).each do |item| # 这里写你的元素处理逻辑 end
场景2:修改原数组(为空时添加默认值)后遍历
用tap方法在原数组上执行补值操作,再直接链式遍历:
object.initial_array.tap { |arr| arr << "foo" if arr.empty? }.each do |item| # 这里写你的元素处理逻辑 end
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

