Перфо - ПоКаждому — различия между версиями

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
м
м
 
Строка 1: Строка 1:
----
+
'''ПоКаждому''' - является расширенным аналогом действия '''map''' из языка Scheme. В отличие от языка Scheme, может работать не только со списками, но и с массивами или коллекциями.
'''ПоКаждому''' - является расширенным аналогом действия map из языка Scheme. В отличие от языка Scheme, может работать не только со списками, но и с массивами или коллекциями.
 
  
 
  (ПоКаждому функция аргумент1 ... аргументН), где аргумент это значение, список или коллекция
 
  (ПоКаждому функция аргумент1 ... аргументН), где аргумент это значение, список или коллекция

Текущая версия на 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) пс)

Перфо. Примеры