我想显示存储在数组数组中的一些数据统计信息。我有三个类别(视频,文章,网络研讨会),但稍后可以扩展。每个类别的统计结构几乎相同。喜欢:视频总数,在类别中添加新记录的最后日期等等。
到目前为止,我可以想到一个数组的哈希来存储统计数据。阵列将保持每个类别的统计结构,并且对于所有类别将是(几乎)相同的。
方面是否有人能想出更好的解决方案?我的想法看起来像
stats = { 'video' = [], 'article' = [], 'webinar' = [] }
stats_array = ['Total number','Last date added','etc']
然后我会做类似
的事情stats['video'][stats_array.index('Total number')] +=1
答案 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>