Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
text = %w[the magic words are squeamish ossifrage]dictionary = %w[an are magic the them these words]# Найти неправильно написанные словаunknown = text - dictionary # ["squeamish", "ossifrage"]8.1.13. Преобразование или отображение массивов
Метод
collectEnumerableЭтот метод просто воздействует неким произвольным образом на каждый элемент массива, порождая в результате новый массив. Иными словами, он «отображает» один массив на другой (отсюда и синоним
mapx = %w[alpha bravo charlie delta echo foxtrot]# Получить начальные буквы.a = x.collect (|w| w[0..0]} # %w[a b с d e f]# Получить длины строк.b = x.collect {|w| w.length} # [5, 5, 7, 5, 4, 7]# map - просто синоним.с = x.map {|w| w.length} # [5, 5, 7, 5, 4, 7]Имеется также вариант
collect!map!x.collect! {|w| w.upcase}# x равно %w[ALPHA BRAVO CHARLIE DELTA ECHO FOXTROT]x.map! {|w| w.reverse}# x равно %w[AHPLA OVARB EILRAHC ATLED OHCE TORTXOF]8.1.14. Удаление из массива элементов равных nil
Метод
compactcompact!nila = [1, 2, nil, 3, nil, 4, 5]b = a.compact # [1, 2, 3, 4, 5]a.compact! # а равно [1, 2, 3, 4, 5]8.1.15. Удаление заданных элементов из массива
В Ruby легко удалить элементы из массива - для этого даже существует много способов. Чтобы удалить элемент с известным индексом, достаточно вызвать метод
delete_ata = [10, 12, 14, 16, 18]a.delete_at(3) # Возвращает 16.# а равно [10, 12, 14, 18]a.delete_at(9) # Возвращает nil {вне диапазона).Все элементы с заданным значением поможет удалить метод
deletenilb = %w(spam spam bacon spam eggs ham spam)b.delete("spam") # Возвращает "spam"# b равно ["bacon", "eggs", "ham"]b.delete("caviar") # Возвращает nilМетод
deleteс = ["alpha", "beta", "gamma", "delta"]c.delete("delta") { "Nonexistent" }# Возвращается "delta" (блок не вычисляется).с.delete("omega") { "Nonexistent" }# Возвращается "Nonexistent".Метод
delete_iftruereject!nilemail = ["job offers", "greetings", "spam", "news items"]# Удалить слова из четырех буквemail.delete_if {|x| x.length==4 }# email равно ["job offers", "greetings", "news items"]Метод
slice!slicex = [0, 2, 4, 6, 8, 10, 12, 14, 16]а = x.slice!(2) # 4# x is now [0, 2, 6, 8, 10, 12, 14, 16]b = x.slice!(2,3) # [6, 8, 10]# x is now [0, 2, 12, 14, 16]с = x.slice!(2..3) # [12, 14]# x is now [0, 2, 16]Для удаления элементов из массива можно также пользоваться методами
shiftpopx = [1, 2, 3, 4, 5]x.рор # Удалить последний элемент.# x is now [1, 2, 3, 4]x.shift # Удалить первый элемент.# x is now [2, 3, 4]Метод
rejecttruearr = [1,2,3,4,5,6,7,8]odd = arr.reject {|x| x % 2 == 0 } # [1,3,5,7]Наконец, метод
clearx = [1, 2, 3]x.clear# x равно []8.1.16. Конкатенирование массивов и добавление в конец массива
Часто нужно добавить в конец существующего массива отдельный элемент или целый массив. В Ruby это можно сделать разными способами.
