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

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
(Новая страница: «'''ПоКаждому''' - является расширенным аналогом действия map из языка Scheme. В отличие от языка…»)
 
м
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
'''ПоКаждому''' - является расширенным аналогом действия map из языка Scheme. В отличие от языка Scheme, может работать не только со списками, но и с массивами или коллекциями.
+
'''ПоВсем''' - является расширенным аналогом действия '''apply''' из языка Scheme. В отличие от языка Scheme, может работать не только со списками, но и с массивами или коллекциями.
  
  (ПоКаждому функция аргумент1 ... аргументН), где аргумент это значение, список или коллекция
+
  (ПоВсем функция аргумент1 ... аргументН), где аргумент это значение, список или коллекция
  
Действие ПоКаждому применяет указанную функцию к каждому набору элементов собираемых из указанных списков.
+
Действие ПоВсем применяет указанную функцию сразу ко всем аргументам.  
  
Возвращается список результатов выполнения функции.
+
Если среди аргументов есть списки, массивы или коллекции, то их содержимое извлекается в единый список аргументов.  
  
Например, если у нас есть два списка (Список 1 2 3) (Список 3 4 5),
+
Указанная функция должна иметь возможность принять все аргументы за один вызов.
  
к которым применяется функция (функ (х у)(+ х у)), которая складывает значения параметров.
+
сначала проверим на простой последовательности аргументов
  
Тогда сначала функция будет вызвана для первых элементов Ф(1, 3),
+
(Вывод (ПоВсем + 1 2 3 4 5 6) пс)
  
а затем для вторых элементов Ф(2, 4) и для третьих элементов Ф(3, 5),
+
теперь для списка, перемножим все элементы
 +
 +
(Вывод (ПоВсем * (Список 1 2 3 4 5 6)) пс)
  
и в результате мы получим новый список (4,6,8).
+
для списка находящегося в переменной
  
 +
(Перем спис (Список 1 2 3 4 5 6))
 +
(Вывод (ПоВсем + спис) пс)
  
Если вместо списка задано значение, то оно считается первым элементом списка по умолчанию.
+
для массива [[Перфо - Массивы]]
  
Если в одном из списков элементов меньше, чем в других, то именно это число элементов будет обработано.
+
(Перем мас (Массив 5 Целое 1 2 3 4 5 6)) //при создании массив можно сразу заполнить значениями
 +
(Вывод (ПоВсем + мас) пс)
  
 +
для коллекции [[Перфо - Коллекции]]
  
тут у нас один список, поэтому и функция с одним параметром
+
(Перем стек (Новый Стек))
 +
(стек.Добавить 100)
 +
(стек.Добавить 200)
 +
(стек.Добавить 300)
 +
(Вывод (ПоВсем + стек) пс)
  
(Вывод  "Один список = " (ПоКаждому (функ (х)(+ х х)) (Список 4 5 6)) пс)
+
а теперь для всех значений сразу
  
  а тут у нас два списка и, соответственно, функция с двумя параметрами
+
  (Вывод (ПоВсем + 1000 2000 (Список 10 20 30) мас стек) пс)
  
Внимание!!! В первом списке последний элемент не используется, т.к. во втором меньше элементов!
+
== Перфо. Примеры ==
 
+
* [[Перфо. Пример 1]]
(Вывод "Два списка = " (ПоКаждому (функ (х у)(+ х у)) (Список 1 2 3 4) (Список 4 5 6)) пс)
+
* [[Перфо. Пример 2]]
 
+
* [[Перфо. Пример 3]]
попробуем с заранее определенной функцией
+
* [[Перфо - Списки]]
 
+
* [[Перфо - ПоВсем]]
(функция (СложитьПараметры х у)(+ х у))
+
* [[Перфо - ПоКаждому]]
(Вывод "Функция СложитьПараметры = " (ПоКаждому СложитьПараметры (Список 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) пс)
+
  
 
[[Категория:Перфо.NET]]
 
[[Категория:Перфо.NET]]

Текущая версия на 21:16, 12 ноября 2020

ПоВсем - является расширенным аналогом действия apply из языка Scheme. В отличие от языка Scheme, может работать не только со списками, но и с массивами или коллекциями.

(ПоВсем функция аргумент1 ... аргументН), где аргумент это значение, список или коллекция

Действие ПоВсем применяет указанную функцию сразу ко всем аргументам.

Если среди аргументов есть списки, массивы или коллекции, то их содержимое извлекается в единый список аргументов.

Указанная функция должна иметь возможность принять все аргументы за один вызов.

сначала проверим на простой последовательности аргументов

(Вывод (ПоВсем + 1 2 3 4 5 6) пс)

теперь для списка, перемножим все элементы

(Вывод (ПоВсем * (Список 1 2 3 4 5 6)) пс)

для списка находящегося в переменной

(Перем спис (Список 1 2 3 4 5 6))
(Вывод (ПоВсем + спис) пс)

для массива Перфо - Массивы

(Перем мас (Массив 5 Целое 1 2 3 4 5 6)) //при создании массив можно сразу заполнить значениями
(Вывод (ПоВсем + мас) пс)

для коллекции Перфо - Коллекции

(Перем стек (Новый Стек))
(стек.Добавить 100)
(стек.Добавить 200)
(стек.Добавить 300)
(Вывод (ПоВсем + стек) пс)

а теперь для всех значений сразу

(Вывод (ПоВсем + 1000 2000 (Список 10 20 30) мас стек) пс)

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