Магия модуля Enumerable в Ruby: #6 Сладкие остатки

января 16, 2011  |  Published in Ruby, Основы

enumerating ruby enumerable
Статьи из цикла Магия модуля Enumerable:

1.Основы
2. Унарный оператор амперсанд “&”
3. Условные операторы
4. Фильтры
5. Создание новых коллекций
6. Методы inject, min и max

Я не смог понять смысла и отношения оригинального названия статьи Aggregates, поэтому назвал статью просто «Методы inject, min и max».
Это последняя статья в цикле статей о модуле Enumerable и методах, которые он в себе содержит и которые позволяют очень удобно работать с коллекциями. В этой статье мы поговорим о методах, которые не возвращают новую коллекцию, а возвращают лишь один объект. Read the rest of this entry »

Tags: , ,

Магия модуля Enumerable в Ruby: #5 Создание новых коллекций

января 16, 2011  |  Published in Ruby, Основы

enumerating ruby enumerable
Статьи из цикла Магия модуля Enumerable:
1.Основы
2. Унарный оператор амперсанд “&”
3. Условные операторы
4. Фильтры
5. Создание новых коллекций
6. Методы inject, min и max

Модуль Enumerable предлагает программисту несколько методов для создания новых коллекций из уже существующих выполняя блок кода для каждого элемента родительской коллекции.

Метод map

Это самый простой и часто используемый метод модуля Enumerable. Этот метод создает оригинальную коллекцию применяя переданный блок кода к каждому элементу внутри и возвращает массив результатов:

['joshua', 'gabriel', 'jacob'].map{|name| name.capitalize} #=> ["Joshua", "Gabriel", "Jacob"]
['joshua', 'gabriel', 'jacob'].map(&:capitalize) #=> ["Joshua", "Gabriel", "Jacob"]

Метод map нуждается в блоке кода, который вы можете передать непосредственно как блок или использовать технику с унарным амперсандом, о которой мы уже говорили во второй статье из цикла Магия модуля Enumerable. Read the rest of this entry »

Tags: , ,

Магия модуля Enumerable в Ruby: #4 Фильтры

января 16, 2011  |  Published in Ruby, Основы

enumerating ruby enumerable
Статьи из цикла Магия модуля Enumerable:
1.Основы
2. Унарный оператор амперсанд “&”
3. Условные операторы
4. Фильтры
5. Создание новых коллекций
6. Методы inject, min и max

Наиболее мощная часть модуля Enumerable — это набор методов, который направлен на помощь вам при фильтрации огромных коллекций для получения более малких коллекции содержащих те элементы, которые вам необходимы.

Метод entries (или to_a)

Не смотря на то, что я пишу об этом методе в статье о методах для фильтрации коллекции,метод entries ничего не фильтрует. Если вы примените этот метод для массива, то вы ничего не заметите. entries возвращает список элементов в коллекции, а для массива будет возвращен собственно сам массив. Вы навеняка сталкивались с этим методом посредствам его псевдонима — метода to_a. Однако, в случае работы с более сложными коллекциями, как, например, наш класс Team, метод entiries будет иметь больший смысл. Ниже представлен класс Team, с которым мы будем работать:

class Team
  include Enumerable

  attr_accessor :members

  def initialize
    @members = []
  end

  def each &block
    @members.each{|member| block.call(member)}
  end
end

Давайте поэкспериментируем с методом entries:

team = Team.new
team.members = ['joshua', 'gabriel', 'jacob']
team #=> #
team.entries #=> ["joshua", "gabriel", "jacob"]

Вы видите, что team является коллекцией, но при этом не является массивом, однако благодаря методу entries мы получаем представление коллекции в виде массива — списка участников. Честно говоря, все это не очень полезно, но хорошо знать, что такой метод существует и знать как он работает.

Read the rest of this entry »

Tags: , ,

Магия модуля Enumerable в Ruby: #3 Условные Операторы

января 15, 2011  |  Published in Ruby, Основы

enumerating ruby enumerable
Статьи из цикла Магия модуля Enumerable:
1.Основы
2. Унарный оператор амперсанд “&”
3. Условные операторы
4. Фильтры
5. Создание новых коллекций
6. Методы inject, min и max
Самые основные методы модуля Enumerable это те, которые дают простой ответ да или нет. Существует три таких условных метода: all? , any? и include?. каждый из этих методов предоставляют вам информацию о коллекции с которой вы работаете.
Начнем изучение их работы на основе следущего кода:

class Team
  include Enumerable

  attr_accessor :members

  def initialize
    @members = []
  end

  def each &block
    @members.each{|member| block.call(member)}
  end
end

Read the rest of this entry »

Tags: , ,

Магия модуля Enumerable в Ruby: #2 унарный оператор амперсанд “&”

января 15, 2011  |  Published in Ruby, Основы

enumerating ruby enumerable

Эта статья является свободным переводом оригинальной статьи на английском языке. Оригинал статьи на английском: . И является второй статьей в цикла «Магия модуля Enumerable».

Статьи из цикла Магия модуля Enumerable:
1.Основы
2. Унарный оператор амперсанд “&”
3. Условные операторы
4. Фильтры
5. Создание новых коллекций
6. Методы inject, min и max
Read the rest of this entry »

Tags: , ,

Магия модуля Enumerable в Ruby: #1 Основы

января 10, 2011  |  Published in Ruby, Основы

enumerating ruby enumerable
Статьи из цикла Магия модуля Enumerable:
1.Основы
2. Унарный оператор амперсанд “&”
3. Условные операторы
4. Фильтры
5. Создание новых коллекций
6. Методы inject, min и max
Вы вероятно уже знакомы с модулем Enumerable в Ruby, даже если вы видите это название в первый раз. Этот модуль добавляет некоторые методы для массивов, например map, inject, select и т.д. Вы наверняка думаете (Как и я ранее долгое время думал), что эти методы являются методами, подмешиваемыми только к массивам, однако это не так.

Read the rest of this entry »

Tags: , ,