2010-02-22 67 views
3

我想顯示數組中存儲的數據的一些統計信息。我有三個類別(視頻,文章,網絡研討會),但稍後可能會擴展。每個類別的統計結構將幾乎相同。像:視頻總數,在類別中添加新記錄的最後日期等。存儲我的統計信息的最佳方式(ruby)

到目前爲止,我可以考慮使用數組的散列來存儲統計信息。陣列可以保持每個類別統計數據的結構,並且對於所有類別都是(幾乎)相同的。可能有人認爲,任何更好的解決方案中的

  • 易於包括新類別術語
  • 易於操控/分配/計算所有的統計數據
  • 容易顯示

我的想法看起來像

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

然後我會做點像

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

回答

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 
$ 
+0

@DigitalRoss:也許我不使用對象,因爲我不明白你的例子... – Radek

+0

好了,所以,你的陣列的和哈希只是班與核心系統一起提供。所以這個想法是,你的數據足夠複雜,應該得到他們自己的班級。這個類將包含以前定義的類型的實例變量,比如你的數組。但是,我們不是用具有魔力的含義來組成數組元素,而是給你要跟蹤的各種事物提供名稱;如果它們合理,我們甚至可以使用數組作爲實例變量。我會嘗試一起更加完整的例子。 – DigitalRoss

+1

好吧,給出了更完整的例子... – DigitalRoss

1

使用面向對象的解決方案!它幾乎沒有編碼開銷,但允許輕鬆擴展等。也許創建一個Statistics類,然後是一個class ArticleStatistic < Statistics類等。您可能不需要早期所有的權力,但它更乾淨,更可擴展。

相關問題