Меню сайта |
 |
|
 |
Категории раздела |
 |
Программирование
[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)
|
Просмотров: 222
| Рейтинг: 0.0/0 |
|
|
Вход на сайт |
 |
|
 |
Поиск |
 |
|
 |
|