Перфо - ПоКаждому — различия между версиями
Линукс (обсуждение | вклад) (Новая страница: «'''ПоКаждому''' - является расширенным аналогом действия apply из языка Scheme. В отличие от язык…») |
Админ (обсуждение | вклад) м |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | '''ПоКаждому''' - является расширенным аналогом действия | + | '''ПоКаждому''' - является расширенным аналогом действия '''map''' из языка Scheme. В отличие от языка Scheme, может работать не только со списками, но и с массивами или коллекциями. |
− | ( | + | (ПоКаждому функция аргумент1 ... аргументН), где аргумент это значение, список или коллекция |
− | Действие | + | Действие ПоКаждому применяет указанную функцию к каждому набору элементов собираемых из указанных списков. |
− | + | Возвращается список результатов выполнения функции. | |
+ | |||
+ | Например, если у нас есть два списка (Список 1 2 3) (Список 3 4 5), | ||
+ | |||
+ | к которым применяется лямбда-функция (функ (х у)(+ х у)), которая складывает значения параметров. | ||
+ | |||
+ | Тогда сначала функция будет вызвана для первой пары элементов Ф(1, 3), | ||
+ | |||
+ | а затем для второй пары элементов Ф(2, 4) и для третьей пары элементов Ф(3, 5), | ||
+ | |||
+ | и в результате мы получим новый список (4,6,8). | ||
+ | |||
+ | ---- | ||
+ | * Если вместо списка задано значение, то оно считается первым элементом списка по умолчанию. | ||
+ | |||
+ | * Если в одном из списков элементов меньше, чем в других, то будет обработано число элементов соответствующее самому маленькому списку. | ||
+ | ---- | ||
+ | |||
+ | тут у нас один список, поэтому и функция с одним параметром | ||
+ | |||
+ | (Вывод "Один список = " (ПоКаждому (функ (х)(+ х х)) (Список 4 5 6)) пс) // пс - перевод строки | ||
+ | |||
+ | а тут у нас два списка и, соответственно, функция с двумя параметрами | ||
+ | |||
+ | Внимание!!! В первом списке последний элемент не используется, т.к. во втором меньше элементов! | ||
+ | |||
+ | (Вывод "Два списка = " (ПоКаждому (функ (х у)(+ х у)) (Список 1 2 3 4) (Список 4 5 6)) пс) | ||
+ | |||
+ | попробуем с заранее определенной функцией | ||
+ | |||
+ | (функция (СложитьПараметры х у)(+ х у)) | ||
+ | (Вывод "Функция СложитьПараметры = " (ПоКаждому СложитьПараметры (Список 2 3 4) (Список 4 5 6)) пс) | ||
+ | |||
+ | попробуем обычные значения | ||
+ | |||
+ | (Вывод "Обычные значения = " (ПоКаждому + 4 6 7 8) пс) | ||
+ | |||
+ | проверим коллекции | ||
+ | |||
+ | (Перем мас1 (Массив 2 Целое 1 2 3)) | ||
+ | (Перем мас2 (Массив 2 Целое 10 20 30)) | ||
+ | (Вывод "Массивы = " (ПоКаждому (функ (х у)(+ х у)) мас1 мас2) пс) | ||
+ | |||
+ | список и массив | ||
+ | |||
+ | (Вывод "Список и массив = " (ПоКаждому (функ (х у)(+ х у)) (Список 1 2 3 4) мас1) пс) | ||
+ | |||
+ | == Перфо. Примеры == | ||
+ | * [[Перфо. Пример 1]] | ||
+ | * [[Перфо. Пример 2]] | ||
+ | * [[Перфо. Пример 3]] | ||
+ | * [[Перфо - Списки]] | ||
+ | * [[Перфо - ПоВсем]] | ||
+ | * [[Перфо - ПоКаждому]] | ||
− | |||
[[Категория:Перфо.NET]] | [[Категория:Перфо.NET]] |
Текущая версия на 21:16, 12 ноября 2020
ПоКаждому - является расширенным аналогом действия map из языка Scheme. В отличие от языка Scheme, может работать не только со списками, но и с массивами или коллекциями.
(ПоКаждому функция аргумент1 ... аргументН), где аргумент это значение, список или коллекция
Действие ПоКаждому применяет указанную функцию к каждому набору элементов собираемых из указанных списков.
Возвращается список результатов выполнения функции.
Например, если у нас есть два списка (Список 1 2 3) (Список 3 4 5),
к которым применяется лямбда-функция (функ (х у)(+ х у)), которая складывает значения параметров.
Тогда сначала функция будет вызвана для первой пары элементов Ф(1, 3),
а затем для второй пары элементов Ф(2, 4) и для третьей пары элементов Ф(3, 5),
и в результате мы получим новый список (4,6,8).
- Если вместо списка задано значение, то оно считается первым элементом списка по умолчанию.
- Если в одном из списков элементов меньше, чем в других, то будет обработано число элементов соответствующее самому маленькому списку.
тут у нас один список, поэтому и функция с одним параметром
(Вывод "Один список = " (ПоКаждому (функ (х)(+ х х)) (Список 4 5 6)) пс) // пс - перевод строки
а тут у нас два списка и, соответственно, функция с двумя параметрами
Внимание!!! В первом списке последний элемент не используется, т.к. во втором меньше элементов!
(Вывод "Два списка = " (ПоКаждому (функ (х у)(+ х у)) (Список 1 2 3 4) (Список 4 5 6)) пс)
попробуем с заранее определенной функцией
(функция (СложитьПараметры х у)(+ х у)) (Вывод "Функция СложитьПараметры = " (ПоКаждому СложитьПараметры (Список 2 3 4) (Список 4 5 6)) пс)
попробуем обычные значения
(Вывод "Обычные значения = " (ПоКаждому + 4 6 7 8) пс)
проверим коллекции
(Перем мас1 (Массив 2 Целое 1 2 3)) (Перем мас2 (Массив 2 Целое 10 20 30)) (Вывод "Массивы = " (ПоКаждому (функ (х у)(+ х у)) мас1 мас2) пс)
список и массив
(Вывод "Список и массив = " (ПоКаждому (функ (х у)(+ х у)) (Список 1 2 3 4) мас1) пс)
Перфо. Примеры
- Перфо. Пример 1
- Перфо. Пример 2
- Перфо. Пример 3
- Перфо - Списки
- Перфо - ПоВсем
- Перфо - ПоКаждому