Содержание сайта
Главная Новичку Цитаты Реализации Статьи Документация
Компании Программы Ссылки Обсуждение Обсуждение 2 Гостевая

Метод SequenceableCollection>>doFirst:doMiddle:doLast:

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

SequenceableCollection>>doFirst: aFirstBlock
			doMiddle: aMiddleBlock
			doLast: aLastBlock

	self keysAndValuesDo: 
		[:i :e | 
		i = 1
			ifTrue: [aFirstBlock value: e]
			ifFalse:
				[i = self size
					ifTrue: [aLastBlock value: e]
					ifFalse: [aMiddleBlock value: e]]]
SequenceableCollection>>doFirst: aFirstBlock doRest: aRestBlock
	self
		doFirst:  [ :e | aFirstBlock value: e ]
		doMiddle: [ :e | aRestBlock value: e ]
		doLast:   [ :e | aRestBlock value: e ]

Простейший случай использования:

	| sum |
	seld doFirst: [ :e | sum := e ]
		doRest: [ :e | sum := sum + e].

Владимир Лешкевич




Есть комментарии? Пишите.