Programming Taskbook 0


Download 1.62 Mb.
Pdf ko'rish
bet41/71
Sana21.06.2023
Hajmi1.62 Mb.
#1644761
TuriУчебное пособие
1   ...   37   38   39   40   41   42   43   44   ...   71
Bog'liq
Abramyan-Pascal2016-1


Глава 4. Запросы 
67 
тельности в структуру, хранящую свои данные в памяти, — например, в 
массив). 
Фильтрация
Методы sequence of T
 
Where(pred: (T[, integer]) -> boolean): sequence of T 
TakeWhile(pred: (T[, integer]) -> boolean): sequence of T 
SkipWhile(pred: (T[, integer]) -> boolean): sequence of T 
Take(count: integer): sequence of T 
* TakeLast(count: integer): sequence of T 
Skip(count: integer): sequence of T 
* Slice(from, step: integer[; count: integer]): sequence of T 
Distinct: sequence of T
Запрос Where является наиболее часто используемым запросом филь-
трации. Он возвращает последовательность, содержащую только те эле-
менты исходной последовательности, которые удовлетворяют предикату 
pred (порядок элементов не изменяется). Запрос TakeWhile заносит в выход-
ную последовательность элементы исходной последовательности, пока 
предикат pred возвращает значение True; запрос SkipWhile пропускает 
начальные элементы исходной последовательности, пока предикат воз-
вращает значение True, после чего заносит в выходную последовательность 
все оставшиеся элементы. Обратите внимание на то, что во всех трех за-
просах предикат pred может содержать дополнительный параметр — ин-
декс анализируемого элемента (индексация начинается с нуля). 
Запросы Take, TakeLast и Skip, подобно методам TakeWhile и SkipWhile
возвращают начальную или конечную часть исходной последовательно-
сти: Take возвращает первые count элементов, TakeLast — последние count 
элементов, а Skip пропускает первые count элементов и возвращает остав-
шиеся. Элементы в полученной последовательности располагаются в том 
же порядке, что и в исходной. Если параметр count больше размера исход-
ной последовательности, то запросы Take и TakeLast возвращают все эле-
менты исходной последовательности, а запрос Skip — пустую последова-
тельность. Запрос Take мы уже использовали в предыдущей
главе
при
об-
суждении
бесконечных
последовательностей (см. п. 3.5). 
Запрос Slice возвращает срез исходной последовательности; он по-
дробно обсуждался в п. 3.7. Напомним лишь, что параметр step для этого 
запроса должен быть положительным. 
Запрос Distinct возвращает последовательность без повторяющихся 
элементов (в последовательности оставляются только первые вхождения 
повторяющихся элементов; повторяющиеся элементы не обязаны распола-
гаться в исходной последовательности подряд). Например, для исходной 
последовательности [1,2,1,2,4,2,3,1] запрос Distinct вернет [1,2,4,3]. 


68 

Download 1.62 Mb.

Do'stlaringiz bilan baham:
1   ...   37   38   39   40   41   42   43   44   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling