获取 ruby 上的数据库迭代索引
Get index of database iteration on ruby
我正在尝试使用 gdbm 遍历数据库文件,使用我获得的值创建对象并将它们分配给一个数组。问题是我似乎无法获得迭代索引,而我的数组需要它。这是代码:
bots_directory = "../data/bots.db"
bots = Array.new
GDBM.new(bots_directory).each_pair.with_index do |nickname, password, index|
bots[index] = Bot.new(nickname, password)
end
我得到的错误:
`[]=': no implicit conversion from nil to integer (TypeError)
另外,执行完block后数据库文件会关闭吗?
我会使用 each_with_index
而不是 each_pair.with_index
:
bots_directory = "../data/bots.db"
bots = []
GDBM.new(bots_directory).each_with_index do |(nickname, password), index|
bots[index] = Bot.new(nickname, password)
end
或者更简单,因为索引从 0
开始并且无论如何都会增加 1
:
bots_directory = "../data/bots.db"
bots = []
GDBM.new(bots_directory).each_pair do |nickname, password|
bots << Bot.new(nickname, password)
end
也许map
也是一种选择?
bots_directory = "../data/bots.db"
bots = GDBM.new(bots_directory).map do |nickname, password|
Bot.new(nickname, password)
end
我正在尝试使用 gdbm 遍历数据库文件,使用我获得的值创建对象并将它们分配给一个数组。问题是我似乎无法获得迭代索引,而我的数组需要它。这是代码:
bots_directory = "../data/bots.db"
bots = Array.new
GDBM.new(bots_directory).each_pair.with_index do |nickname, password, index|
bots[index] = Bot.new(nickname, password)
end
我得到的错误:
`[]=': no implicit conversion from nil to integer (TypeError)
另外,执行完block后数据库文件会关闭吗?
我会使用 each_with_index
而不是 each_pair.with_index
:
bots_directory = "../data/bots.db"
bots = []
GDBM.new(bots_directory).each_with_index do |(nickname, password), index|
bots[index] = Bot.new(nickname, password)
end
或者更简单,因为索引从 0
开始并且无论如何都会增加 1
:
bots_directory = "../data/bots.db"
bots = []
GDBM.new(bots_directory).each_pair do |nickname, password|
bots << Bot.new(nickname, password)
end
也许map
也是一种选择?
bots_directory = "../data/bots.db"
bots = GDBM.new(bots_directory).map do |nickname, password|
Bot.new(nickname, password)
end