0

我正在使用 Axlsx gem 来创建 Excel 工作表。

应用 Ruby 线程后工作表名称位置出错。

例如:

我想以这种方式订购单子

sheet 1
sheet 2
sheet 3

但是在应用红宝石线程后它进来了

sheet 2
sheet 1
sheet 3

如何保持工作表井井有条?

4

1 回答 1

0

这将基于您的 RubyFiddle 示例

arr = (1..10).map do |i|
  Thread.new{
     sleep(rand(0)/10.0)
     Thread.current["mycount"] = count
     count += 1
  }
end
arr.each do |t| 
  t.join
  puts "#{t['mycount']}"
end
    #24
    #28
    #29
    #26
    #23
    #22
    #25
    #21
    #27
    #20

arr.sort_by{|t| t["mycount"]}.each do |t| 
  t.join
  puts "#{t['mycount']}"
end
   #20
   #21
   #22
   #23
   #24
   #25
   #26
   #27
   #28
   #29

或者更好,尽管可能不适用于您导出电子表格的完整解决方案

arr.sort_by(&:value).each(&:join)
于 2014-05-05T16:00:01.497 回答