조건과 분기
if-this-then-that, 상황에 따라 다르게 동작하기
5 min read
앱은 상황에 따라 다르게 동작해야 합니다. 목록이 비었을 때, 요청이 실패했을 때, 숫자가 기준을 넘었을 때 — 이런 경우를 다루는 것이 Conditional(분기) 액션입니다. "이렇다면 이렇게 한다(if this, then that)" 를 코드 없이 표현합니다.
분기의 구조
분기 액션은 하나의 주제(subject) 값을 보고, 여러 갈래 중 조건에 맞는 첫 번째 갈래를 실행합니다. 주제 값의 종류에 따라 쓸 수 있는 조건이 달라집니다.
참/거짓 (Boolean)
- True — 값이 참일 때
- False — 값이 거짓일 때
숫자 (Number)
숫자를 기준값과 비교합니다.
| 연산자 | 의미 |
|--------|------|
| == | 같음 |
| > | 초과 |
| < | 미만 |
| >= | 이상 |
| <= | 이하 |
텍스트 (String)
- equals — 정확히 일치
- ≠ — 일치하지 않음
- contains — 포함
- starts with — ~로 시작
- ends with — ~로 끝남
HTTP 상태 코드
API 호출 결과를 다룰 때는 상태 코드 패턴(200, 2XX, 4XX, default)으로 분기합니다. 해당 API 가 선언한 응답 상태에 맞춰 분기를 자동으로 만들 수도 있습니다.
Else
어떤 조건에도 맞지 않을 때 실행되는 기본 갈래입니다.
각 갈래에서 실행할 동작
각 갈래에는 실행할 동작을 직접 작성하거나(인라인 플로우), 이미 만들어 둔 프로젝트의 Action Flow 를 참조할 수 있습니다.
Guard — 조건이 아니면 멈추기
Guard 는 분기의 이른 종료(early-exit) 버전입니다. 주제 값과 조건 하나만 지정합니다 — 조건이 맞으면 다음 액션으로 계속 진행하고, 맞지 않으면 플로우가 그 자리에서 멈춥니다 (오류가 아니라 의도된 종료입니다).
- 입력값이 비어 있으면 이후 액션(저장, API 호출)을 아예 실행하지 않기
- API 응답이
2XX가 아니면 거기서 중단하기
여러 갈래가 필요 없이 "계속 진행할 조건" 하나면 될 때 Conditional 보다 간단합니다. 조건의 종류(참/거짓 · 숫자 · 텍스트 · HTTP 상태)는 분기와 동일합니다.
For Each — 배열 반복하기
For Each 는 배열을 순회하며 본문 플로우를 요소마다 한 번씩, 순서대로 실행합니다.
- 반복할 배열을 바인딩합니다.
- 본문에 실행할 액션을 작성합니다.
- 본문 액션에서 For Each 의 출력
{Item, Index}를 바인딩해 현재 요소와 순번을 사용합니다.
- 결과 수집은 본문에서 Update Data(Append) 로 대상 배열에 추가하는 방식으로 합니다.
- 본문 안의 Guard 는 그 반복만 건너뜁니다(다음 요소로 계속).
- 한 요소에서 실패해도 반복은 계속되며, 반복 횟수는 최대 1,000회입니다.
예를 들어 숫자 ID 배열을 For Each 로 돌면서 각 ID 로 API Call 을 보내고 응답을 목록 데이터에 Append 하면, ID 목록이 상세 정보 목록으로 채워집니다.
활용 예
- 입력값이 비어 있으면 Alert 를 띄우고, 아니면 데이터를 추가합니다.
- 점수가
>= 100이면 축하 화면으로 이동하고, Else 면 그대로 둡니다. - API 응답이
2XX면 결과를 화면에 바인딩하고,4XX면 오류 메시지를 보여 줍니다. - Guard 로 "로그인된 경우에만 계속" 을 플로우 맨 앞에 두어 이후 액션 전체를 보호합니다.
숫자나 텍스트를 비교해 참/거짓을 얻고 싶다면 액션의 종류의 Compare / Compare Text 액션으로 Boolean 값을 먼저 만든 뒤 분기할 수 있습니다.