ruby - 如何在Ruby中用零初始化一个未确定大小的数组?
问题描述
我有一个接收可变大小数组的方法(它可以是任何大小),我需要在数组中的任何位置添加一个计数器。
这是带有 IRB 的示例代码
▶▶ irb
2.5.5 :001 > arr = Array.new(0)
=> []
2.5.5 :002 > max = rand(1..99)
=> 95
2.5.5 :003 > count = rand(1..max)
=> 11
2.5.5 :004 > arr[count] += 1
Traceback (most recent call last):
2: from /home/elorat/.rvm/rubies/ruby-2.5.5/bin/irb:11:in `<main>'
1: from (irb):4
NoMethodError (undefined method `+' for nil:NilClass)
2.5.5 :005 >
解决方案
我认为你有 71% 的机会要求这个:
def increment_and_extend_if_necessary(arr, idx)
arr.fill(0, arr.size..idx)
arr[idx] += 1
end
arr = []
increment_and_extend_if_necessary(arr, 3)
arr #=> [0, 0, 0, 1]
increment_and_extend_if_necessary(arr, 1)
arr #=> [0, 1, 0, 1]
increment_and_extend_if_necessary(arr, 5)
arr #=> [0, 1, 0, 1, 0, 1]
increment_and_extend_if_necessary(arr, 3)
arr #=> [0, 1, 0, 2, 0, 1]
请参阅Array#fill。
推荐阅读
- python - 通过两个列表进行交互以获取python中元组中的元素
- c# - 共享 OracleConnection 以同时执行多个 OracleCommands 是否安全?
- javascript - 使用客户端 JavaScript [React] 与文件夹中的文件交互
- regex - 正则表达式将 ISBN-10 和 ISBN-13 扩展到非英语国家
- php - Laravel - 如何查询 Eloquent 关系?
- excel - 在 Excel 中,有没有办法创建一个仅更改自由文本单元格格式的下拉列表?
- node.js - 使用 reactjs 从一个集合中获取数据并发布到另一个 mongodb 集合
- swift - mac app打开后如何执行命令
- django - 重新加载页面时使用 Django 上传重复文件
- html - 如何显示div表格的底部边框