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

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

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