Навигация: reach, step, until, finish
Дойти до функции или строки, сделать шаг, выполнить до возврата. Каждая операция возвращает остановку.
с 0.1.0-rc.1с 0.3.0
Методы
| Элемент | Сигнатура | Доступен с | API 3 |
|---|---|---|---|
reach | reach(location, condition=None) -> dict | 0.1.0-rc.1¹ | await в async |
step | step(count=1, *, unit="source", mode="into") -> dict | 0.3.0 | await в async |
until | until(location=None) -> dict | 0.3.0 | await в async |
finish | finish() -> dict | 0.3.0 | await в async |
¹ Базовая форма; расширения 0.3.0 описаны в карточке.
Изменения API 3 (0.5.0)
В async def — await. Условие reach вычисляется без вызовов функций цели.
Правильно
Условие задаётся выражением над данными; finish возвращает в вызывающий кадр.
t.reach("board_adc_sample", condition="board_adc_sequences == 3")
t.reach("app_step")
t.finish()
t.check("returned to the caller", t.frames()["frames"][0]["function"], "app_receiver_step")
t.until("app_loop")
t.step(3)
# async def
await t.reach("app_step")
await t.finish()Не рекомендуется
Вызов функции в условии отклоняется (expression_call_forbidden). Цикл step вместо reach с условием тратит время и точки.
t.reach("board_adc_sample", condition="board_adc_ready()") # hidden call: refused
while t.read("board_adc_sequences") < 3:
t.step() # use reach with a conditionФрагменты показывают отклонённые или нежелательные приёмы, а не рабочий рецепт.
Фрагменты для тела сценария; символы прошивки условные.