> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ko/blocks/blocks/logic-and-branching/switch-case.md).

# 스위치 케이스

프로그램의 switch-case 문과 유사하게, 입력 값을 사례 값 집합과 비교하여 여러 브랜치 중 하나로 워크플로 실행을 라우팅함으로써, 여러 Continue If 블록을 연결하지 않고도 다중 분기, 값 기반 라우팅, 의사결정 트리를 가능하게 합니다.

## 이 블록의 작동 방식

이 블록은 단일 입력 값을 사례 매핑의 키와 비교하여 첫 번째로 일치하는 사례에 연결된 단계로 실행을 보냅니다. 이 블록은:

1. 하나의 `값` 입력(일반적으로 워크플로 입력 또는 단계 출력을 참조하는 선택기, 예: 분류 결과)을 받아 문자열로 변환합니다
2. 문자열을 다음에서 찾습니다 `cases` 매핑에서 찾습니다. 여기서 각 키는 사례 값이고 각 값은 해당 사례가 일치할 때 실행할 단계입니다(예: `{"red": "$steps.on_red", "blue": "$steps.on_blue"}`)
3. 만약 `case_insensitive` 가 활성화되면 비교는 대소문자를 무시합니다
4. 사례가 일치하면 실행은 해당 사례의 단계로 계속되며 다른 모든 브랜치는 종료됩니다
5. 어떤 사례도 일치하지 않으면 실행은 `default_next_steps`
6. 에 나열된 단계로 계속됩니다. 사례가 일치하지 않고 `default_next_steps` 가 비어 있으면 브랜치는 종료됩니다

입력 값은 일치하기 전에 문자열로 변환되므로, 문자열이 아닌 값은 해당 문자열 표현과 일치합니다: `True` 키와 일치합니다 `"True"`, `1.0` 과 일치합니다 `"1.0"` (아닌 `"1"`), 그리고 누락/None 값은 `"None"`. 각 대상 단계는 전체에서 최대 한 번만 나타날 수 있습니다. `cases` 및 `default_next_steps` - 여러 사례 값을 동일한 로직으로 라우팅하려면 각 사례를 자체 단계에 연결하거나, 상위 단계에서 값을 정규화하세요(예: Expression 블록 사용).

## 일반적인 사용 사례

* **분류 결과에 따른 라우팅**: 분류 모델이 예측한 상위 클래스를 기준으로 이미지를 서로 다른 처리 경로로 보냅니다(예: "damaged" → 알림 브랜치, "ok" → 로깅 브랜치, 그 외 모든 경우 → 기본 검토 브랜치)
* **모드 기반 파이프라인**: 워크플로 입력 파라미터(예: `$inputs.mode`)을 워크플로를 편집하지 않고 런타임에 대체 처리 브랜치 중에서 선택하는 데 사용합니다
* **다중 경로 알림**: 워크플로에서 이전에 계산된 심각도 또는 카테고리 값에 따라 서로 다른 알림 블록(이메일, Slack, 웹훅)으로 라우팅합니다
* **연속된 조건 대체**: 동일한 값을 서로 다른 상수와 비교하는 Continue If 블록의 사다리를 더 읽기 쉬운 하나의 블록으로 압축합니다

## 다른 블록에 연결하기

이 블록은 워크플로 실행 흐름을 제어하며 다음과 같이 연결할 수 있습니다:

* **분류 또는 감지 블록 다음에** 예측 클래스, 개수 또는 기타 예측 속성에 따라 분기합니다(종종 분기 기준 값을 추출하는 Property Definition 또는 Expression 블록을 통해)
* **워크플로 입력 뒤에** 런타임 파라미터에서 브랜치를 선택합니다
* **모든 하위 블록보다 앞에서** (모델, 알림, 싱크) 중 특정 사례에서만 실행되어야 하는 것 - 각 사례 대상은 자체 실행 브랜치의 시작점이 됩니다
* **기본 브랜치와 함께** 를 통해 연결됨 `default_next_steps` 일치하지 않는 값을 처리하거나, 아무것도 일치하지 않으면 단순히 중지하려면 비워 둡니다

### 유형 식별자

단계에서 다음 식별자를 사용하세요 `"type"` 필드: `roboflow_core/switch_case@v1` 워크플로우에 이 블록을 단계로 추가하려면.

### 속성

| **이름**             | **유형**                         | **설명**                                                                                                                                                                          | 참조 |
| ------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`             | `str`                          | 이 단계에 대한 고유 식별자를 입력하세요..                                                                                                                                                        | ❌  |
| `값`                | `Union[bool, float, int, str]` | 사례 키와 비교할 값입니다. 일반적으로 워크플로 입력이나 단계 출력을 참조하는 선택기(예: $inputs.mode 또는 $steps.classifier.top)입니다. 비교 전에 값은 문자열로 변환되므로, 불리언은 키 'True'/'False'와, 1.0은 '1.0'과, None 값은 'None'과 일치합니다.. | ✅  |
| `case_insensitive` | `bool`                         | 활성화되면 사례 값이 대소문자를 무시하고 일치합니다(예: 값 'RED'는 사례 키 'red'와 일치합니다)..                                                                                                                   | ❌  |

이 **참조** 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 `워크플로우` 런타임입니다. 자세한 내용은 *바인딩* 을 참조하세요.

### 입력 및 출력 바인딩

사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 `스위치 케이스` 버전 `v1` 을 가지고 있는지.

<details>

<summary>입력 및 출력 바인딩</summary>

* 입력
  * `값` ([*`*`*](/workflows/ko/developer-guide/developer-guide/kinds/wildcard.md)): 사례 키와 비교할 값입니다. 일반적으로 워크플로 입력이나 단계 출력을 참조하는 선택기(예: $inputs.mode 또는 $steps.classifier.top)입니다. 비교 전에 값은 문자열로 변환되므로, 불리언은 키 'True'/'False'와, 1.0은 '1.0'과, None 값은 'None'과 일치합니다..
  * `cases` (*단계*): 사례 값과, 일치할 때 실행해야 하는 단계의 매핑 `값` 과 일치합니다. 예: {"red": "$steps.on\_red", "blue": "$steps.on\_blue"}. 각 대상 단계는 전체에서 최대 한 번만 나타날 수 있습니다. `cases` 및 `default_next_steps`..
  * `default_next_steps` (*단계*): 어떤 사례도 일치하지 않을 때 실행할 단계입니다. 아무것도 일치하지 않으면 브랜치를 종료하려면 비워 두세요..
* 출력

</details>

<details>

<summary>예시 JSON 정의</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/switch_case@v1",
	    "value": "$steps.classifier.top",
	    "cases": {
	        "blue": "$steps.on_blue",
	        "red": "$steps.on_red"
	    },
	    "case_insensitive": false,
	    "default_next_steps": [
	        "$steps.fallback"
	    ]
	}
```

</details>
