Книга: Программирование на языке Ruby

8.2.2. Указание значения по умолчанию для хэша

8.2.2. Указание значения по умолчанию для хэша

Значением по умолчанию для хэша является объект, возвращаемый вместо nil в случае, когда указанный ключ не найден. Это полезно, если вы планируете вызывать для возвращенного значения методы, которые для nil не определены. Задать значение по умолчанию можно в момент создания хэша или позже с помощью метода default=.

Все отсутствующие ключи указывают на один и тот же объект по умолчанию, поэтому изменение данного объекта имеет побочный эффект.

а = Hash.new("missing") # Объект по умолчанию - строка "missing".
a["hello"]              # "missing"
а.default="nothing"
a["hello"]              # "nothing"
a["good"] << "bye"      # "nothingbye"
a.default               # "nothingbye"

Имеется также специальный метод экземпляра fetch, который возбуждает исключение IndexError, если в объекте типа Hash нет указанного ключа. Он принимает также второй параметр, играющий роль значения по умолчанию. Кроме того, методу fetch можно передать необязательный блок, который выработает значение по умолчанию, если ключ не будет найден. Таким образом, каждому отсутствующему ключу можно сопоставить свое «значение по умолчанию».

а = {"flat",3,"curved",2,"angled",5}
a.fetch("pointed")                # IndexError
a.fetch("curved","na")            # 2
a.fetch("x","na")                 # "na"
a.fetch("flat") {|x| x.upcase}    # 3
a.fetch("pointed") {|x| x.upcase) # "POINTED"

Оглавление книги


Генерация: 1.256. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз