Skip to content

Commit

Permalink
В функциональных интерфейсах коллекций добавлена поддержка передачи к…
Browse files Browse the repository at this point in the history
…онтекста в лямбда выражения
  • Loading branch information
sfaqer committed Jan 1, 2025
1 parent e4ce58f commit 633758a
Show file tree
Hide file tree
Showing 58 changed files with 2,189 additions and 172 deletions.
14 changes: 11 additions & 3 deletions doc/Итераторы/ЧитающийИтератор.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,17 @@
// которая принимает элемент коллекции
// - Строка - Лямбда выражение с одним параметром
// которая принимает элемент коллекции
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Пример:
// Итератор.ДляКаждогоОставшегося(Элемент -> Сообщить(Элемент));
// Итератор.ДляКаждогоОставшегося("Элемент -> Сообщить(Элемент)");
//
Процедура ДляКаждогоОставшегося(Действие)
```
// Итератор.ДляКаждогоОставшегося("Элемент -> Массив.Добавить(Элемент)", Новый Структура("Массив", Новый Массив));
//
Процедура ДляКаждогоОставшегося(Действие, Контекст)
```
75 changes: 67 additions & 8 deletions doc/Карты/Карта.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,26 @@
// и Опциональный от текущего значения ключа (пустой если ключа нет)
// - Строка - Лямбда выражение с двумя параметрами в которую будут переданы ключ
// и Опциональный от текущего значения ключа (пустой если ключа нет)
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия во втором параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия во втором параметре, этот параметр игнорируется
//
// Пример:
// Карта.ВычислитьБезусловно("Ключ", "(Ключ, Значение) -> ?(Значение.Пустой(), Истина, Ложь)")
//
// Карта.ВычислитьБезусловно(
// "Ключ",
// "(Ключ, Значение) -> ?(Значение.Пустой() И ВернутьИстину, Истина, Ложь)",
// Новый Структура("ВернутьИстину", Истина)
// );
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Новое значение ключа
//
Функция ВычислитьБезусловно(Ключ, ФункцияПереназначения)
Функция ВычислитьБезусловно(Ключ, ФункцияПереназначения, Контекст)
```

### ВычислитьЕслиОтсутствует
Expand All @@ -86,15 +98,23 @@
// Ключ - Произвольный - Ключ, для которого вычисляется значение
// ФункцияНазначения - Действие - Делегат на функцию с одним параметром, в которую передаётся переданный ключ
// - Строка - Лямбда выражение с одним параметром в который будет передан переданный ключ
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия во втором параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия во втором параметре, этот параметр игнорируется
//
// Пример:
// Карта.ВычислитьЕслиОтсутствует("Ключ", "(Ключ) -> СтрДлина(Ключ)")
//
// Карта.ВычислитьЕслиОтсутствует("Ключ", "(Ключ) -> СтрДлина(Ключ) + Соль", Новый Структура("Соль", 123))
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Новое значение ключа если оно было вычислено, или текущее значение ключа
// если карта уже содержала переданный ключ
//
Функция ВычислитьЕслиОтсутствует(Ключ, ФункцияНазначения)
Функция ВычислитьЕслиОтсутствует(Ключ, ФункцияНазначения, Контекст)
```

### ВычислитьЕслиПрисутствует
Expand All @@ -111,6 +131,12 @@
// и текущее значение ключа
// - Строка - Лямбда выражение с двумя параметрами, в которые передаются ключ и текущее
// значение ключа
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия во втором параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия во втором параметре, этот параметр игнорируется
//
// Пример:
// Карта.ВычислитьЕслиПрисутствует("Ключ", "(Ключ, Значение) -> {
Expand All @@ -122,10 +148,20 @@
// |}"
// );
//
// Карта.ВычислитьЕслиПрисутствует("Ключ", "(Ключ, Значение) -> {
// | Если Ключ = ""Ключ"" Тогда
// | Возврат СтрДлина(Значение.Получить()) + Соль;
// | Иначе
// | Возврат Соль;
// | КонецЕсли;
// |}",
// Новый Структура("Соль", 123);
// );
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Новое значение ключа
//
Функция ВычислитьЕслиПрисутствует(Ключ, ФункцияПереназначения)
Функция ВычислитьЕслиПрисутствует(Ключ, ФункцияПереназначения, Контекст)
```

### Слить
Expand All @@ -141,20 +177,35 @@
// Значение - Произвольный - Новое значение ключа
// ФункцияПереназначения - Действие - Делегат на функцию с двумя параметрами в которые передаются
// существующее и новое значение ключа
// - Строка - Лямбда выражение с двумя параметрами в которые передаются
// - Строка - Лямбда выражение с двумя параметрами в которые передаются
// существующее и новое значение ключа
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия в третьем параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в третьем параметре, этот параметр игнорируется
//
// Пример:
// Карта.Слить("Ключ", 4, "(СуществующееЗначение, НовоеЗначение) ->
// Карта.Слить("Ключ", 4, "(СуществующееЗначение, НовоеЗначение) ->
// | Возврат ?(НовоеЗначение > СуществующееЗначение,
// | НовоеЗначение,
// | СуществующееЗначение
// | );"
// );
//
// Карта.Слить("Ключ", 4, "(СуществующееЗначение, НовоеЗначение) ->
// | Возврат ?(НовоеЗначение > СуществующееЗначение,
// | НовоеЗначение,
// | СуществующееЗначение
// | );")
// | ) + Соль;",
// Новый Структура("Соль", 123);
// );
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Новое значение ключа
//
Функция Слить(Ключ, Значение, ФункцияПереназначения)
Функция Слить(Ключ, Значение, ФункцияПереназначения, Контекст)
```

### Заменить
Expand Down Expand Up @@ -199,11 +250,19 @@
// передаются ключ и значение ключа
// - Строка - Лямбда выражение с двумя параметрами, в которые передаются
// ключ и значение ключа
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Пример:
// Карта.ЗаменитьВсе("(Ключ, Значение) -> Значение + 1")
//
Процедура ЗаменитьВсе(ФункцияПереназначения)
// Карта.ЗаменитьВсе("(Ключ, Значение) -> Значение + Соль", Новый Структура("Соль", 123));
//
Процедура ЗаменитьВсе(ФункцияПереназначения, Контекст)
```

### Удалить
Expand Down
8 changes: 7 additions & 1 deletion doc/Карты/ЧитаемаяКарта.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,17 @@
// Алгоритм - Действие - Делегат на метод с двумя параметрами который будет выполнятся
// в первый параметр передаётся ключ во второй значение
// - Строка - Лямбда выражение с двумя параметрами в первый параметр передаётся ключ во второй значение
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Пример:
// Карта.ДляКаждого("(Ключ, Значение) -> Сообщить(СтрШаблон(""Ключ: %1, Значение:2"", Ключ, Значение))");
//
Процедура ДляКаждого(Алгоритм)
Процедура ДляКаждого(Алгоритм, Контекст)
```

### Получить
Expand Down
10 changes: 9 additions & 1 deletion doc/Обходимое/Коллекция.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,22 @@
// Параметры:
// Предикат - Действие - Делегат на функцию с одним параметром, в которой передаётся элемент коллекции
// - Строка - Лямбда выражение с одним параметром, в который передаётся элемент коллекции
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Пример:
// Коллекция.УдалитьЕсли("(Элемент) -> Элемент >= 2");
//
// Коллекция.УдалитьЕсли("(Элемент) -> Элемент >= Предел", Новый Структура("Предел", 2));
//
// Возвращаемое значение:
// Булево - Истина, если был удалён хотя бы один элемент
//
Функция УдалитьЕсли(Предикат)
Функция УдалитьЕсли(Предикат, Контекст)
```

### СохранитьВсе
Expand Down
13 changes: 10 additions & 3 deletions doc/Обходимое/Обходимое.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// Возвращаемое значение:
// Итератор - Итератор коллекции
//
Функция Итератор() Экспорт
Функция Итератор()
```

### ДляКаждого
Expand All @@ -21,10 +21,17 @@
// будет передан элемент коллекции
// - Строка - Лямбда выражение с одним параметром, в который будет
// будет передан элемент коллекции
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Пример:
// Обходимое.ДляКаждого("Элемент -> Сообщить(Элемент)");
//
Процедура ДляКаждого(Алгоритм) Экспорт
// Обходимое.ДляКаждого("Элемент -> Массив.Добавить(Элемент)", Новый Структура("Массив", Новый Массив));
//
Процедура ДляКаждого(Алгоритм, Контекст)
```

7 changes: 7 additions & 0 deletions doc/Списки/Список.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@
// 1 - Если первый элемент больше,
// -1 - Если второй элемент больше,
// 0 - Если элементы равны
// Контекст - Структура - Контекст добавляемый в лямбда выражение, значения будут доступны по обращению
// к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение, в лямбда выражении
// будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Пример:
// Список.Сортировать("Первый, Второй -> {
Expand All @@ -78,6 +84,7 @@
// |}"
// );
//
Процедура Сортировать(СравнениеЗначений, Контекст)
```

### УдалитьПоИндексу
Expand Down
Loading

0 comments on commit 633758a

Please sign in to comment.