Опытным
путем
Пятница, 11.07.2025, 19:39
Приветствую Вас Гость | RSS
 
Главная Каталог статейРегистрацияВход
Меню сайта
Категории раздела
Программирование [0]
Статьи по алгоритмизации, программированию, языкам программирования
Системы разработки [2]
Статьи, посвященные различным средствам разработки.
Обработка текстов [3]
Статьи, посвященные различным текстовым редакторам и приемам обработки текстов
Обработка графики [1]
Статьи, посвященные обработке изображений в различных графических редакторах
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Обработка текстов

Итераторы в Ruby
В этой статье я хочу остановиться на замечательной возможности языка Ruby - итераторах.

Итератор в языке ruby, в простейшем случае перебирает объекты некоторого класса, например Fixnum (целое число) и выполняет заданный код.

Итераторы целых чисел.

итератор times:
    5.times do |i|
        puts" итерация - #{i}"
    end
В результате получится:
итерация - 0
итерация - 1
итерация - 2
итерация - 3
итерация - 4

Понятно, что этот итератор повторяет инструкции указанное число раз.

итератор upto:
    1.upto(5) do |i|
        puts" итерация - #{i}"
    end

В результате:

итерация - 1
итерация - 2
итерация - 3
итерация - 4
итерация - 5

Разница очевидна: отсчет ведется от заданного числа до указанного в скобках

итератор downto:
    5.downto(1) do |i|
        puts" итерация - #{i}"
    end

Результат:

итерация - 5
итерация - 4
итерация - 3
итерация - 2
итерация - 1

Итератор интервала: each
    (1..5).each do |i|
        puts "итерация - #{i}"
    end

результат:
итерация - 1
итерация - 2
итерация - 3
итерация - 4
итерация - 5

возвращается интервал 1..5, а не количество повторений!!!

И в завершении знакомства с итераторами: итератор map.
Предполагается что код в теле итератора изменит элементы интервала или списка, если этого не произойдет то возвращается список объектов nil.

    (1..5).map do |i|
        puts "m - #{i}"
        i=2*i
    end.each do |l|
        puts "e - #{l}"
    end

результат:
m - 1
m - 2
m - 3
m - 4
m - 5
e - 2
e - 4
e - 6
e - 8
e - 10

и еще один интересный итератор: jnject

Этот итератор присутствует в (массивах) нумерованных списках, хешах (списках с ключами вместо номеров) и других классах.
Inject сохраняет в специальной переменной-накопителе значение выражения в теле итератора:
s = (1..5).inject(0) do |r,b|
          r+b
end
p s

вычисляется сумма чисел от 1 до 5
Категория: Обработка текстов | Добавил: jhtulen (30.03.2015)
Просмотров: 223 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Вход на сайт
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2025
    Конструктор сайтовuCoz