Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
a.fetch("pointed") # IndexErrora.fetch("curved","na") # 2a.fetch("x","na") # "na"a.fetch("flat") {|x| x.upcase} # 3a.fetch("pointed") {|x| x.upcase) # "POINTED"8.2.3. Доступ к парам ключ-значение и добавление новых пар
В классе
Hash[][]=Arrayа = {}а["flat"] = 3 # {"flat"=>3}а.[]=("curved",2) # {"flat"=>3,"curved"=>2}a.store("angled",5) # {"flat"=>3,"curved"=>2,"angled"=>5}Метод
store[]=Метод
fetch[]IndexErrora["flat"] # 3а.[]("flat") # 3a.fetch("flat") # 3a["bent"] # nilПредположим, что мы не уверены, существует ли объект
Hashunless defined? а а={}enda["flat"] = 3Но есть и другой способ:
а ||= {}a["flat"] = 3# Или даже так:(а ||= {})["flat"] = 3Тот же вопрос можно поставить для отдельных ключей, когда новое значение следует присваивать, лишь если такого ключа еще нет:
a=Hash.new(99)а[2] # 99а # {}а[2] ||= 5 # 99а # {}b=Hash.newb # {}b[2] # nilb[2] ||= 5 # 5b # {2=>5}Отметим, что nil может выступать и в качестве ключа, и в качестве значения:
b={}b[2] # nil b[3]=nilb # {3=>nil}b[2].nil? # trueb[3].nil? # true b[nil]=5b # {3=>nil,nil=>5}b[nil] # 5b[b[3]] # 58.2.4. Удаление пар ключ-значение
Удалить пары ключ-значение из хэша можно с помощью методов
cleardeletedelete_ifrejectreject!shiftМетод
clearМетод
shiftnila = {1=>2, 3=>4}b = a.shift # [1,2]# а равно {3=>4}Метод
deletea = (1=>1, 2=>4, 3=>9, 4=>16)a.delete(3) # 9# a is now {1=>1, 2 =>4, 4=>16)a.delete(5) # в этом случае nil.delete(6) { "не найдено" } # "не найдено".Пользуйтесь методами
delete_ifrejectreject!truerejectreject!nil8.2.5. Обход хэша
В классе
Hasheacheach_keyeach_paireach_valueeach_paireach{"а"=>3, "b"=>2}.each do |key, val| print val, " из ", key, "; " # 3 из a; 2 из b;
