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

We use cookies. Read the Privacy and Cookie Policy

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"

Данный текст является ознакомительным фрагментом.