Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
ru:toolworks:docs:apparatus:operating [2021/09/01 23:24] – создано + переведено jispar | ru:toolworks:docs:apparatus:operating [2022/06/08 21:00] (текущий) – обновил в соответствии с англоязычной версией jispar | ||
---|---|---|---|
Строка 3: | Строка 3: | ||
Более новый и функциональный способ оперировать над Цепями через процесс, | Более новый и функциональный способ оперировать над Цепями через процесс, | ||
- | ===== Написание кода | + | ===== Организация в C++ ===== |
==== Использование лямбда-выражений ==== | ==== Использование лямбда-выражений ==== | ||
Строка 9: | Строка 9: | ||
Можно легко оперировать над Цепями через C++ лямбды и вот как следует это делать: | Можно легко оперировать над Цепями через C++ лямбды и вот как следует это делать: | ||
<code cpp> | <code cpp> | ||
- | Chain-> | + | Chain-> |
{ | { | ||
... | ... | ||
Строка 15: | Строка 15: | ||
</ | </ | ||
- | Тип курсора должен соответствовать типу использованной цепи ([[ru: | ||
Обратите внимание, | Обратите внимание, | ||
Итак, оперировать над твердотельной Цепью вам следует следующим образом: | Итак, оперировать над твердотельной Цепью вам следует следующим образом: | ||
<code cpp> | <code cpp> | ||
- | SolidChain-> | + | SolidChain-> |
{ | { | ||
... | ... | ||
Строка 36: | Строка 35: | ||
<code cpp> | <code cpp> | ||
- | SolidChain-> | + | SolidChain-> |
{ | { | ||
... | ... | ||
Строка 43: | Строка 42: | ||
Второй параметр помогает ограничить количество потоков. Если слишком мало доступных слотов, | Второй параметр помогает ограничить количество потоков. Если слишком мало доступных слотов, | ||
+ | |||
+ | ==== Доставка аргументов ==== | ||
+ | |||
+ | Хорошая особенность оперирования - это то, что аргументы функции решаются и доставляются автоматически в вашу логику. | ||
+ | Например, | ||
+ | <code cpp> | ||
+ | Chain-> | ||
+ | { | ||
+ | ... | ||
+ | }); | ||
+ | </ | ||
+ | Это, конечно, | ||
+ | <code cpp> | ||
+ | SolidChain-> | ||
+ | { | ||
+ | ... | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | Вы можете запрашивать разную информацию контекста внутри цикла. Например: | ||
+ | <code cpp> | ||
+ | Chain-> | ||
+ | { | ||
+ | ... | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | ==== Индекс текущей итерации ==== | ||
+ | |||
+ | В случае, | ||
+ | SolidChain-> | ||
+ | { | ||
+ | Placement.Number = Cursor.GetChainSlotIndex(); | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | ==== Остановка ==== | ||
+ | |||
+ | Хотя и непонятно, | ||
+ | |||
+ | Например: | ||
+ | <code cpp> | ||
+ | int32 Counter = 0; | ||
+ | Chain-> | ||
+ | { | ||
+ | if (Counter > 100) | ||
+ | { | ||
+ | Chain-> | ||
+ | // Досрочно возвращаем управление, | ||
+ | return; | ||
+ | } | ||
+ | Counter += Trait.Value; | ||
+ | }); | ||
+ | </ |