考虑这个程序
require 'dbi'
handle = DBI.connect('DBI:Mysql:tasks', 'root', 'stupid')
handle.select_all('select * from tasks') do |row|
puts row.inspect
end
rows = handle.select_all('select * from tasks')
puts rows.inspect
第一次调用select_all
被传递一个块,它使用它来遍历表行,就像它假设的那样。这是用于迭代的标准 Ruby 习惯用法,所以它当然可以工作。
第二次调用应返回相同的数据,但一次全部打包在一个数组中。数组实际上包含的是表格的最后一行!
这是一个错误,还是我做错了什么?