Хэши против массивов в Ruby (я правильно их использую?) - PullRequest
0 голосов
/ 26 августа 2011

Я по сути строю календарь.Каждый день считается выходным или выходным.Это не может быть и то и другое.Я беру вводимые пользователем данные и генерирую календарь на следующие 365 дней, используя то, что в основном является тестовым условием.

Я считаю, что мне следует использовать хеш для этого, используя дату в качестве ключа.Я прочитал это, пока я использую ruby ​​1.9, хэши остаются в порядке, и я могу перебирать их как массив, если я так решаю.Я считаю, что я буду проходить через них, когда я отображаю календарь.

Это правильный образ мышления?

1 Ответ

2 голосов
/ 26 августа 2011

В Ruby есть установленный класс , который вы можете использовать для хранения дат.Поскольку наборы внутренне реализованы в виде хэшей, поиск выполняется быстро.Пример (более или менее слегка убранный сеанс 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 в качестве переменной экземпляра вместо того, чтобы передавать ее, но принцип должен быть таким же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...