Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| ru:toolworks:docs:apparatus:operating [2021/09/01 20:24] – создано + переведено jispar | ru:toolworks:docs:apparatus:operating [2022/06/08 18: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; | ||
| + | }); | ||
| + | </ | ||