存储统计信息的最佳方式(ruby)

时间:2010-02-22 00:05:14

标签: ruby data-structures statistics

我想显示存储在数组数组中的一些数据统计信息。我有三个类别(视频,文章,网络研讨会),但稍后可以扩展。每个类别的统计结构几乎相同。喜欢:视频总数,在类别中添加新记录的最后日期等等。

到目前为止,我可以想到一个数组的哈希来存储统计数据。阵列将保持每个类别的统计结构,并且对于所有类别将是(几乎)相同的。

方面是否有人能想出更好的解决方案?
  • 很容易包含新类别
  • 易于操作/分配/计算所有统计数据
  • 易于展示

我的想法看起来像

stats = { 'video' = [], 'article' = [], 'webinar' = [] } 
stats_array = ['Total number','Last date added','etc']

然后我会做类似

的事情
stats['video'][stats_array.index('Total number')] +=1

2 个答案:

答案 0 :(得分:3)

我投票赞成Peter的回答: - )

这是一个例子......(更新为有一个to_s而不是一个打印助手,无论如何都没有粘贴)...(再次更新排序/数组问题)...

class Stats
  attr_accessor :type, :count, :last_date;
  def initialize t
    @type = t
  end
  def to_s
    "%-9s %4d %s" % [@type, @count, @last_date]
  end
  def <=> other
    [@type, @last_date, @count] <=> [other.type, other.count, other.last_date]
  end
end

all = []
v = Stats.new 'video'
v.count = 12
v.last_date = 'Tuesday'
all << v
a = Stats.new 'article'
a.count = 5
a.last_date = 'Monday'
all << a

puts v
puts a
puts "Ask, and ye shall be sorted..."
puts all.sort
$ ruby r5.rb
video       12 Tuesday
article      5 Monday
Ask, and ye shall be sorted...
article      5 Monday
video       12 Tuesday
$ 

答案 1 :(得分:1)

使用面向对象的解决方案!它几乎没有编码开销,但允许轻松扩展等。也许创建一个Statistics类,然后创建一个class ArticleStatistic < Statistics类等。你可能不需要尽早掌握所有这些功能,但它更清洁,更可扩展。 / p>