Link Search Menu Expand Document

Обходимое

Стд::Обходимое<ItemType>
Базовые типы: Объект
Дочерние типы: ЧитаемаяКоллекция, ЧитаемоеСоответствие
ТипЭлемента: тип обходимых элементов.

Иерархия типа

graph BT;
Обходимое&ltТипЭлемента&gt-->Объект;

Объект предоставляет возможность обхода своих элементов в цикле для из. Возможность повторного обхода не гарантируется.

Сравнение ссылочное


Методы

ВМассив

ВМассив(): Массив<ТипЭлемента>

Преобразует Обходимое в Массив.


ВСоответствие

ВСоответствие<ТипКлюча>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча): Соответствие<ТипКлюча, ТипЭлемента>
Перегрузка:
ВСоответствие<ТипКлюча, ТипЗначения>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча, ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения): Соответствие<ТипКлюча, ТипЗначения>

Преобразует Обходимое в Соответствие, используя заданную функцию для вычисления ключа.

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Имя: Петя, Возраст: 24},
//  {Ид: 5,  Имя: Вася, Возраст: 30}]

знч ИдСотрудник = Сотрудники.ВСоответствие(Элемент -> Элемент.Ид) // Соответствие<Число, Сотрудник>
// {13 : {Ид: 13, Имя: Петя, Возраст: 24},
//   5 : {Ид: 5,  Имя: Вася, Возраст: 30}}

ВСоответствие

ВСоответствие<ТипКлюча, ТипЗначения>(
  ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча,
  ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения
): Соответствие<ТипКлюча, ТипЗначения>
Перегрузка:
ВСоответствие<ТипКлюча>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча): Соответствие<ТипКлюча, ТипЭлемента>

Преобразует Обходимое в Соответствие, используя заданные функции для вычисления ключа и значения.

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Имя: Петя}, {Ид: 5, Имя: Вася}]

знч ИдИмя = Сотрудники.ВСоответствие(Элемент -> Элемент.Ид, Элемент -> Элемент.Имя) // Соответствие<Число, Строка>
// { 13 : "Петя",
//    5 : "Вася"}

ВоМножество

ВоМножество(): Множество<ТипЭлемента>

Преобразует Обходимое во Множество.

Примеры

знч Числа = [1, 3, 5, 10, 12, 1, 3, 5]
знч МножествоЧисел = Числа.ВоМножество() // {1, 3, 5, 10, 12}

ВсеСоответствуют

ВсеСоответствуют(Предикат: (ТипЭлемента)->Булево): Булево

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

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Имя: Петя, Отдел: Администрация},
//  {Ид: 5,  Имя: Вася, Отдел: Администрация},
//  {Ид: 6,  Имя: Иван, Отдел: Разработка}]

Сотрудники.ВсеСоответствуют(Элемент -> Элемент.Отдел == "Разработка") // Ложь

// пример сокращенного вычисления 
знч Числа = [1, 2, 3, 4, 5]
знч КвадратыЧисел = <Число>[]
знч ВсеЧетные = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ВсеСоответствуют(а -> а % 2 == 0) // Ложь
// КвадратыЧисел = [1]

ГруппироватьПо

ГруппироватьПо<ТипКлюча>(Извлекатель: (ТипЭлемента)->ТипКлюча): Соответствие<ТипКлюча, Массив<ТипЭлемента>>

Группирует элементы в соответствии с заданной функцией вычисления ключа. Элементы с одинаковым ключом объединяются в Массив.

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

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Имя: Петя, Отдел: Администрация},
//  {Ид: 5,  Имя: Вася, Отдел: Администрация},
//  {Ид: 6,  Имя: Иван, Отдел: Разработка}]

знч ОтделыИСотрудники = Сотрудники.ГруппироватьПо(Элемент -> Элемент.Отдел) // Соответствие<Строка, МассивСотрудник>
// { 
//   Администрация: [{Ид: 13, Имя: Петя, Отдел: Администрация}, 
//                   {Ид: 5,  Имя: Вася, Отдел: Администрация}],
//   Разработка:    [{Ид: 6,  Имя: Иван, Отдел: Разработка}]
// }

ДляКаждого

ДляКаждого(Действие: (ТипЭлемента)->ничто): Массив<ТипЭлемента>

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

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Имя: Петя}, {Ид: 5, Имя: Вася}]

Сотрудники.ДляКаждого(Элемент -> Консоль.Записать(Элемент.Ид + " - " + Элемент.Имя))
// 13 - Петя
// 5 - Вася

// В примере ниже действие 'а -> КвадратыЧисел.Добавить(а * а)'
// на сервере будет вызвано только для первого элемента
знч Числа = [1, 3, 5]
знч КвадратыЧисел = <Число>[]
знч Первое = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ПервыйИлиУмолчание() // 1
// КвадратыЧисел = [1]

Единственный

Единственный(): ТипЭлемента

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

Исключения

ИсключениеНедопустимоеСостояние - если нет элементов или элементов больше одного.


ЕдинственныйИлиУмолчание

ЕдинственныйИлиУмолчание(): ТипЭлемента?
Перегрузка:
ЕдинственныйИлиУмолчание<ТипУмолчания>(Умолчание: ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания

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

Исключения

ИсключениеНедопустимоеСостояние - если элементов больше одного.


ЕдинственныйИлиУмолчание

ЕдинственныйИлиУмолчание<ТипУмолчания>(Умолчание: ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания
Перегрузка:
ЕдинственныйИлиУмолчание(): ТипЭлемента?

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

Исключения

ИсключениеНедопустимоеСостояние - если элементов больше одного.


ЕстьСоответствия

ЕстьСоответствия(Предикат: (ТипЭлемента)->Булево): Булево

Возвращает Истина, если хотя бы один из элементов удовлетворяет условию в предикате. На сервере это операция сокращенного вычисления. Это значит, что вызванные ранее в цепочке вызовов операции, могут быть вызваны не для каждого элемента.

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Имя: Петя, Отдел: Администрация},
//  {Ид: 5, Имя: Вася,  Отдел: Администрация},
//  {Ид: 6, Имя: Иван,  Отдел: Разработка}]

Сотрудники.ЕстьСоответствия(Элемент -> Элемент.Отдел == Администрация) // Истина

// пример сокращенного вычисления 
знч Числа = [1, 2, 3, 4, 5]
знч КвадратыЧисел = <Число>[]
знч ЕстьЧетные = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ЕстьСоответствия(а -> а % 2 == 0) // Истина
// КвадратыЧисел = [1, 4]      

КакПоследовательность

КакПоследовательность(): Последовательность<ТипЭлемента>

Преобразует Обходимое в Последовательность.


Максимум

<ItemType это Сравнимое<ТипЭлемента>> Максимум(): ТипЭлемента

Возвращает максимальный элемент из элементов Обходимого типа Сравнимое.

Исключения

ИсключениеНедопустимоеСостояние - если нет элементов.

Примеры

знч Числа = [1, 3, 5, 10, 12]
знч Макс = Числа.Максимум() // 12

МаксимумПо

МаксимумПо(Извлекатель: (ТипЭлемента)->Сравнимое<неизвестно>): ТипЭлемента

Возвращает максимальный по заданному свойству элемент.

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Имя: Петя, Возраст: 25},
//  {Имя: Вася, Возраст: 24},
//  {Имя: Иван, Возраст: 30}]
 
знч СтаршийСотрудник: Сотрудник = Сотрудники.МаксимумПо(Элемент -> Элемент.Возраст)
// {Имя: Иван, Возраст: 30}

Минимум

<ItemType это Сравнимое<ТипЭлемента>> Минимум(): ТипЭлемента

Возвращает минимальный элемент из элементов Обходимого типа Сравнимое.

Исключения

ИсключениеНедопустимоеСостояние - если нет элементов.

Примеры

знч Числа = [1, 3, 5, 10, 12]
знч Минимум: Число = Числа.Минимум() // 1

МинимумПо

МинимумПо(Извлекатель: (ТипЭлемента)->Сравнимое<неизвестно>): ТипЭлемента

Возвращает минимальный по заданному свойству элемент.

Исключения

ИсключениеНедопустимоеСостояние - если нет элементов.

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Имя: Петя, Возраст: 25},
//  {Имя: Вася, Возраст: 24},
//  {Имя: Иван, Возраст: 30}]
 
знч МладшийСотрудник: Сотрудник = Сотрудники.МинимумПо(Элемент -> Элемент.Возраст)
// {Имя: Вася, Возраст: 24}

НетСоответствий

НетСоответствий(Предикат: (ТипЭлемента)->Булево): Булево

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

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Имя: Петя, Отдел: Администрация},
//  {Ид: 5,  Имя: Вася, Отдел: Администрация},
//  {Ид: 6,  Имя: Иван, Отдел: Разработка}]

Сотрудники.НетСоответствий(Элемент -> Элемент.Отдел == Бухгалтерия) // Истина

// пример сокращенного вычисления 
знч Числа = [1, 2, 3, 4, 5]
знч КвадратыЧисел = <Число>[]
знч НетЧетных = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).НетСоответствий(а -> а % 2 == 0) // Ложь
// КвадратыЧисел = [1, 4]

Объединить

Объединить(Обходимое: Обходимое<ТипЭлемента>): Массив<ТипЭлемента>

Объединяет элементы текущего обходимого с элементами Обходимое и возвращает новый массив.

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Имя: Петя,   Возраст: 25}, 
//  {Имя: Вася,   Возраст: 24}] 

знч Сотрудники2: Массив<Сотрудник> = ...
// [{Имя: Иван,   Возраст: 26}, 
//  {Имя: Андрей, Возраст: 27}]

знч ВсеСотрудники: Массив<Сотрудник> = Сотрудники.Объединить(Сотрудники2)
// [{Имя: Петя,   Возраст: 25}, 
//  {Имя: Вася,   Возраст: 24},
//  {Имя: Иван,   Возраст: 26}, 
//  {Имя: Андрей, Возраст: 27}] 

ПервыйИлиУмолчание

ПервыйИлиУмолчание(): ТипЭлемента?
Перегрузка:
ПервыйИлиУмолчание<ТипУмолчания>(Умолчание: ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания

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

Примеры

знч Числа = [1, 3, 5, 10, 12, 15, 20]
знч Первый = Числа.ПервыйИлиУмолчание() // 1

// пример сокращенного вычисления 
знч КвадратыЧисел = <Число>[]
знч Первый1 = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ПервыйИлиУмолчание() // 1
// КвадратыЧисел = [1]


ПервыйИлиУмолчание

ПервыйИлиУмолчание<ТипУмолчания>(Умолчание: ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания
Перегрузка:
ПервыйИлиУмолчание(): ТипЭлемента?

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

Примеры

знч Числа = [1, 3, 5, 10, 12, 15, 20]
знч Первый = Числа.ПервыйИлиУмолчание(1) // 1

// пример сокращенного вычисления 
знч КвадратыЧисел = <Число>[]
знч Первый1 = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ПервыйИлиУмолчание(1) // 1
// КвадратыЧисел = [1]


ПотомСортироватьПо

ПотомСортироватьПо(
  Извлекатель: (ТипЭлемента)->Сравнимое<неизвестно>,
  Направление: НаправлениеСортировки = НаправлениеСортировки.ПоВозрастанию
): Массив<ТипЭлемента>

Выполняет дополнительную сортировку, используя Извлекатель для сравнения элементов. Возвращает новый отсортированный Массив.

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

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Возраст: 31, Имя: Петя}, 
//  {Ид: 18, Возраст: 42, Имя: Иван}, 
//  {Ид: 5,  Возраст: 42, Имя: Вася}]
 
знч ПоВозрастаниюИд = Сотрудники.СортироватьПо(Элемент -> Элемент.Возраст).ПотомСортироватьПо(Элемент -> Элемент.Ид)
// [{Ид: 13, Возраст: 31, Имя: Петя}, 
//  {Ид: 5,  Возраст: 42, Имя: Вася}, 
//  {Ид: 18, Возраст: 42, Имя: Иван}]

Преобразовать

Преобразовать<ТипРезультата>(
  Функция: (ТипЭлемента)->ТипРезультата,
  ПропуститьНеопределено: Булево = Истина
): Массив<ТипРезультата>

Применяет функцию к каждому элементу обходимого и возвращает массив с результатами.

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
//[{Ид: 1, Имя: Петя}, {Ид: 2, Имя: Вася}]
знч Имена: Массив<Строка> = Сотрудники.Преобразовать(Сотрудник -> Сотрудник.Имя)
//[Петя, Вася]

ПреобразоватьЛинейно

ПреобразоватьЛинейно<ТипРезультата>(Функция: (ТипЭлемента)->Массив<ТипРезультата>): Массив<ТипРезультата>

Преобразует каждый элемент Обходимого в Массив и объединяет в общий Массив.

Примеры

знч Отделы: Массив<Отдел> = ...
//[{Ид: 1, Сотрудники: [Петя, Вася]}, 
// {Ид: 2, Сотрудники: [Иван, Андрей]}]

знч ВсеСотрудники: Массив<Строка> = Отделы.ПреобразоватьЛинейно(Отдел -> Отдел.Сотрудники())
// [Петя, Вася, Иван, Андрей]

Пусто

Пусто(): Булево

Проверяет, есть ли элементы.


Свернуть

Свернуть(Операция: (ТипЭлемента, ТипЭлемента)->ТипЭлемента): ТипЭлемента
Перегрузка:
Свернуть(НачальноеЗначение: ТипЭлемента, Операция: (ТипЭлемента, ТипЭлемента)->ТипЭлемента): ТипЭлемента

Сводит все элементы Обходимого к одному значению с помощью заданной операции.

Операция - функция, которая принимает два аргумента, выполняет над ними некоторую операцию и возвращает результат. Затем эта функция опять применяется к результату и следующему элементу.

Исключения

ИсключениеНедопустимоеСостояние - если нет элементов.

Примеры

знч Числа = [1, 3, 5, 10]
знч Сумма = Числа.Свернуть((а, б) -> а + б)   // 19

Свернуть

Свернуть(
  НачальноеЗначение: ТипЭлемента,
  Операция: (ТипЭлемента, ТипЭлемента)->ТипЭлемента
): ТипЭлемента
Перегрузка:
Свернуть(Операция: (ТипЭлемента, ТипЭлемента)->ТипЭлемента): ТипЭлемента

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

Операция - функция, которая принимает два аргумента, выполняет над ними некоторую операцию и возвращает результат. Затем эта функция опять применяется к результату и следующему элементу.

Примеры

знч Числа = [1, 3, 5, 10]
знч Сумма = Числа.Свернуть(100, (а, б) -> а + б)   // 119

Соединить

<ItemType это Строка> Соединить(Разделитель: Строка = ""): Строка

Соединяет элементы в одну строку, с разделителем Разделитель.

Исключения

ИсключениеНедопустимоеСостояние - если нет элементов.

Примеры

знч Сотрудники = ["Петя", "Вася", "Иван"]
знч Список = Сотрудники.Соединить(", ") // "Петя, Вася, Иван"

Сортировать

Сортировать(Компаратор: (ТипЭлемента, ТипЭлемента)->Число): Массив<ТипЭлемента>
Перегрузка:
<ItemType это Сравнимое<ТипЭлемента>> Сортировать(Направление: НаправлениеСортировки = НаправлениеСортировки.ПоВозрастанию): Массив<ТипЭлемента>

Сортирует Обходимое, используя Компаратор для сравнения элементов. Возвращает новый отсортированный Массив.

Примеры

знч Числа = [10, 12, 1, 3, 5]
знч ПоВозрастанию = Числа.Сортировать((а, б) -> а - б)  // [1, 3, 5, 10, 12]
знч ПоУбыванию = Числа.Сортировать((а, б) -> б - а)     // [12, 10, 5, 3, 1]

Сортировать

<ItemType это Сравнимое<ТипЭлемента>> Сортировать(Направление: НаправлениеСортировки = НаправлениеСортировки.ПоВозрастанию): Массив<ТипЭлемента>
Перегрузка:
Сортировать(Компаратор: (ТипЭлемента, ТипЭлемента)->Число): Массив<ТипЭлемента>

Сортирует элементы обходимого типа Сравнимое. Возвращает новый отсортированный Массив.

Примеры

знч Числа = [10, 12, 1, 3, 5]
знч ПоВозрастанию = Числа.Сортировать() // [1, 3, 5, 10, 12]
знч ПоУбыванию = Числа.Сортировать(НаправлениеСортировки.ПоУбыванию) // [12, 10, 5, 3, 1]

СортироватьПо

СортироватьПо(
  Извлекатель: (ТипЭлемента)->Сравнимое<неизвестно>,
  Направление: НаправлениеСортировки = НаправлениеСортировки.ПоВозрастанию
): Массив<ТипЭлемента>

Сортирует Обходимое, используя Извлекатель для сравнения элементов. Возвращает новый отсортированный Массив.

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

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Ид: 13, Имя: Петя}, {Ид: 5, Имя: Вася}]
знч ПоВозрастаниюИд = Сотрудники.СортироватьПо(Элемент -> Элемент.Ид)
// [{Ид: 5, Имя: Вася}, {Ид: 13, Имя: Петя}]

Уникальные

Уникальные(): Массив<ТипЭлемента>

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

Примеры

знч Числа = [12, 10, 5, 3, 1, 3, 5, 10]
знч УникальныеЧисла = Числа.Уникальные() // [12, 10, 5, 3, 1]

УникальныеПо

УникальныеПо<ТипСвойства>(Извлекатель: (ТипЭлемента)->ТипСвойства): Массив<ТипЭлемента>

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

Извлекатель - функция, применяющаяся к каждому элементу, возвращающая характеристику, по которой будет определяться уникальность элементов.

Примеры

знч Сотрудники: Массив<Сотрудник> = ...
// [{Имя: Петя, Возраст: 25},
//  {Имя: Вася, Возраст: 24},
//  {Имя: Иван, Возраст: 25}]

знч УникальныеПоВозрасту: Массив<Сотрудник> =  Сотрудники.УникальныеПо(Элемент -> Элемент.Возраст)
// [{Имя: Петя, Возраст: 25},
//  {Имя: Вася, Возраст: 24}]

Фильтровать

Фильтровать(Фильтр: (ТипЭлемента)->Булево): Массив<ТипЭлемента>

Фильтрует элементы Обходимого по заданному критерию.

Примеры

знч Числа = [1, 3, 5, 10, 12]
знч Четные = Числа.Фильтровать(Элемент -> Элемент % 2 == 0) // [10, 12]

Список унаследованных методов

Объект