프날 오토핫키 강좌
누르면 강좌 리스트가 나와요
프날 오토핫키 강좌

📣 더 깊은 내용이 담긴 '프날 오토핫키 강좌 v2'의 서적판이 공개되었습니다.

가장 최신의 오토핫키를 담은 '프날 오토핫키 강좌 v2'를 책으로 만나보세요! v2 페이지에 공개된 분량보다 더욱 깊은 내용을 처음이라도 괜찮아, 오토핫키 프로그래밍을 통해 배울 수 있습니다. 전국 온/오프라인 서점에서 만나요!
책 더 알아보기 및 구매하기 

[프날 오토핫키] Switch문

오토핫키 버전이 1.1.31이 넘어가면서, Switch를 이용한 분기문 구성이 가능해졌습니다. (타언어에서의 그 Switch가 맞습니다.)

 

사실 지원이 늦은 감도 없지않아 있지만, 막상 생기니 좋더라고요.


 Switch문 

Switch문의 구조는 아래와 같습니다. (SciTE 업데이트가 되고있지 않아서 실제 편집기상에선 Switch, Case 키워드가 파란색으로 표시되지 않을 것입니다. ^^;)

Switch [SwitchValue]
{
    Case CaseValue1:
        statements1
    Case CaseValue2:
        statements2
    Default:
        statements3
}
  • SwitchValue: 조건을 검사할 변수가 됩니다. 표현식을 사용합니다.
  • CaseValue1,2: 변수과 비교할 또다른 피연산자가 됩니다.
  • Dafault: Case에 걸리지 않는 부분을 모두 포함하는 부분입니다.

즉, 아래와 같이 쓰면 됩니다.

Switch 변수
{
    Case "A":
        ;//변수 = A일때 할 행동
    Case "B":
        ;//변수 = B일때 할 행동
    Default:
        ;//변수 = A도 B도 아닐때 할 행동
}

if문과 동일한 것을 눈치채셨나요? 위 예시는 아래의 if문과 기능적으로 완전히 동일합니다.

if (변수 = "A")
    ;//변수 = A일때 할 행동
else if (변수 = "B")
    ;//변수 = B일때 할 행동
else
    ;//변수 = A도 B도 아닐때 할 행동

Switch키워드 뒤와, Case키워드 뒤에는 "표현식"이며, 이는 문자열은 "따옴표" 처리를 하고 식(변수, 상수, 연산식)은 그냥 써주시면 된다는 뜻입니다.

 

그리고, Switch문 내부에선 case와 case, 혹은 case와 dafult사이는 자동으로 한 단락으로 취급합니다. '조건이 참일때 할 행동'이 여러줄이라도, 중괄호로 묶어줄 필요 없이 써주시면 된다는 뜻입니다.

Switch 변수
{
    Case "A":
        ;//행동
        ;//행동
        ;//행동
    Case "B":
        ;//행동
        ;//행동
    Default:
        ;//행동
        ;//행동
        ;//행동
}

→ 두 줄이 넘어가도 중괄호로 구분을 해주지 않습니다.

 

또한, "행동"이 한 줄일 경우 Case(혹은 Default)의 콜론(:)뒤에 써줄 수도 있습니다.

Switch 변수
{
    Case 1: Send, 가나다
    Case 2: Send, 라마바
    Dafault: Send, 사아자
}

스크립트 언어인 오토핫키에서는 어색한 모습이긴 합니다. (한 줄에 하나의 명령어가 원칙이기 때문입니다.)

필요한 경우엔 이렇게도 사용할 수 있으니 알아서 써주시면 될 것 같습니다.


 Switch문을 쓰면 좋은 상황 

Switch문의 역할은 "식의 상태에 의한 조건 분기"입니다. 즉, 아래와 같은 상황을 대체할 수 있습니다.

if (var = 1)
    a := "일"
else if (var = 2)
    a := "이"
else if (var = 3)
    a := "삼"
else
    a := ""

같은 var변수를 비교하는데, else if와 if가 같은 단락에 있기 때문에 정확한 범위가 한 눈에 들어오지 않습니다. 만약 위 구문의 윗쪽과 아랫쪽에 다른 if문이 있다면, 서로 구분이 잘 되지 않겠지요. (그래서 저는 한 줄씩 띄워서 작성하고는 했습니다.)

 

이런 경우엔, 아래와 같이 Switch문을 이용할 수 있습니다.

Switch var
{
    Case 1:
        a := "일"
    Case 2:
        a := "이"
    Case 3:
        a := "삼"
    Default:
        a := ""
}

Switch문에 의해 전체가 한 단락으로 묶이면서 더욱 눈에 잘 띄게 되었습니다.

위 두 사진을 비교해보았을때, Switch문을 사용하면 두 단락으로 묶이기 때문에 범위를 파악하기에 용이하고, if문을 사용하면 총 8단락으로 묶였기 때문에 한 눈에 잘 띄지 않는 모습을 볼 수 있습니다.


사실 상황에 따라서 Switch문이 더 눈에 안띄는 경우가 있긴 합니다. (주로 '조건이 참일때 하는 행동'에 해당하는 부분이 길어지면 그렇습니다.)

 

상황에 맞게 if문과 Switch문을 섞어가며 사용해주시면 좋을 것 같습니다.

⚠ 이 강좌는 오토핫키 v1을 다룹니다

지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.