如何设置Ruby数组长度?无需手动添加10个元素实现长度为10的数组
在Ruby中设置数组长度的方法
当然可行!Ruby对数组操作的支持非常灵活,完全不用手动写10个元素就能创建或调整到指定长度的数组,下面给你几种常用的方式:
一、创建指定长度的新数组
1. 使用Array.new基础用法
这是最直接的方式,传入长度参数即可,默认每个元素是nil:
my_array = Array.new(10) # => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
2. 创建带默认值的指定长度数组
如果不想用nil当默认元素,可以加第二个参数:
# 创建10个0的数组 my_array = Array.new(10, 0) # => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
⚠️ 注意:如果默认值是可变对象(比如哈希、数组),直接传第二个参数会让所有元素指向同一个对象,修改一个会影响全部。这种情况要用块形式来创建独立的元素:
# 每个元素都是独立的空哈希 my_array = Array.new(10) { {} } # 修改第一个元素不会影响其他 my_array[0][:key] = "value" # => [{:key=>"value"}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
3. 使用*运算符快速创建
这种方式更简洁,但同样要注意可变对象的坑:
# 10个nil的数组 my_array = [nil] * 10 # 10个空字符串的数组 my_array = [""] * 10
二、调整已有数组的长度
如果已经有一个数组,想把它的长度改成10,可以用这两种方法:
1. 直接赋值length属性
短数组会自动补nil到指定长度,长数组会截断多余的元素:
arr = [1, 2, 3] arr.length = 10 # => [1, 2, 3, nil, nil, nil, nil, nil, nil, nil] arr = [1,2,3,4,5,6,7,8,9,10,11] arr.length = 10 # => [1,2,3,4,5,6,7,8,9,10]
2. 使用resize方法
效果和赋值length完全一样,写法更直观:
arr = [1,2,3] arr.resize(10) # => [1, 2, 3, nil, nil, nil, nil, nil, nil, nil]
根据你的需求选对应的方法就好啦~
内容的提问来源于stack exchange,提问作者Pedro
相关产品推荐
相关产品推荐

