哈希与Ruby中的数组(我使用它们对吗?)

时间:2011-08-26 15:12:47

标签: ruby arrays architecture hash

我基本上是在制作日历。每一天都被视为白天或休息日。它不可能两者兼而有之。我接受用户输入并使用基本上是测试条件的情况生成接下来365天的日历。

我相信我应该使用日期作为键来使用哈希。我读过,只要我使用ruby 1.9,哈希就会按顺序排列,如果我选择的话,我可以像数组一样迭代它们。我相信当我显示日历时,我将遍历它们。

这是正确的思考方式吗?

1 个答案:

答案 0 :(得分:2)

Ruby有一个set class,可用于存储“on”日期。由于内部集合实现为哈希,因此查找速度很快。示例(或多或少略微整理IRB会话):

require 'set' 
require 'date'

on_days = Set.new
on_days << Date.today + 1
on_days << Date.today + 7

def on_day?(on_days, date_to_check)
  on_days.include? date_to_check
end 
>> on_day?(on_days, Date.today) #=> false
>> on_day?(on_days, Date.today+1) #=> true

在一个真实的程序中,你可能将它包装在一个类中,on_days作为实例变量而不是传递它,但原则应该是相同的。