Этот блог предназначен для начинающих программистов, изучающих Ruby.
Основное применение метода Map в Ruby — эффективное преобразование данных. Метод Map можно использовать с массивами, хэшами и диапазонами. Ниже приведены несколько примеров использования Map.
Использование карты с массивами:
В фигурных скобках находится код нашего блока. |n| представляет каждый элемент в массиве, и каждый элемент будет умножен на четыре. Карта преобразует исходный массив на основе этого кода блока и возвращает новый массив. Однако исходный массив не будет изменен. Другое название Map — Collect. Вы можете использовать любой из них, но большинство языков программирования используют Map, поэтому лучше использовать Map.
Разница между картой и каждым:
Карта будет собирать результат на основе выполнения блока кода над элементами массива. Каждый из них является очень простым методом, который просто запускает блок кода по элементам без сбора значений.
Использование карты с хешами:
При использовании Map с хешами нам нужны две переменные. |k, v| — это две переменные, представляющие ключи и значения соответственно. В приведенном выше примере «имя» и «хобби» являются ключами, а «Лотарингия» и «походы» — значениями. Результат первого метода Map дает нам размеры значений, которые в данном случае представляют собой длину символов значений. Map всегда будет возвращать массив, даже если вы начали с хеша или любого другого типа объекта, поддерживающего метод Map. Результатом использования метода карты всегда будет массив.
Второй метод Map в приведенном выше примере возвращает хэш вместо массива. [k, v.size] в блоке кода даст нам массив массивов или многомерный массив. Метод to_h или To Hash преобразует многомерный массив в хэш. Новый хэш будет содержать новые значения, которые теперь будут иметь размер предыдущих строковых значений.
Вывод
Теперь вы узнали, как метод Map работает с массивами и хэшами. Вы также узнали разницу между Map и Each, а также псевдоним для Map, который называется Collect. Попробуйте попрактиковаться в использовании Map с другими объектами и методами.