switch
switch(스위치)문에 대해서는 이전에 작성한 글도 있으므로 참고한다.(유니티07_C#_03_제어문)
switch(스위치)문은 if~else문 처럼 조건을 검사할 수 있지만 몇 가지 제약이 있다.
- 같은지 비교만 할 수 있다.
- 하나의 변수만 비교할 수 있다.
- 변수를 문자와만 비교할 수 있다.(다른 변수와 비교 안됨)
스위치문의 예는 다음과 같다.
유니티에서 아래 스크립트(Switch.cs)를 만든다.
스위치문의 기본 구조는 위 코드에서 분홍색 키워드로 이루어져 있다.
5번줄: int 타입의 number(숫자)라는 변수를 정의하고 초기값으로 5를 저장한다.
9번줄: switch문으로 비교한다. 괄호안에 비교할 대상(변수)를 넣는다.
11번줄: case(케이스, 경우) 키워드로 비교할 숫자를 지정한다.
number는 int(정수)타입이므로 비교 대상을 숫자로 넣는다.
12번줄: number값과 0을 비교해서 같다면 (같은 경우라면) print메서드에 있는 문자열(변수값은 0이다)을 출력한다.
13번줄: case문의 끝에 break 키워드로 마치면, 다른 case는 비교하지 말고 바로 switch문의 끝(22번줄)으로 점프하게 된다. 만약 break를 붙이지 않으면 다음 case로 넘어가지만 이때는 실행코드(12번줄)도 삭제해야 한다.
19번줄: 나열한 case에 해당하지 않는 경우가 true(참)이면 default(디폴트, 기본)에서 지정할 수 있다.
스크립트를 저장한 후 실행하면 아래와 같은 결과가 나올것이다.
둘 이상의 case가 같은 코드를 실행해야 할 때는 아래와 같이 할 수 있다.
19번줄의 경우와 20번줄의 경우는 21번줄의 코드를 실행한다.
switch문은 if문을 대신할 수 있다고 하지만 제약이 많아서 별 쓸모가 없어 보인다.
어떤 경우에 유용하게 사용할 수 있는가?
예를 들어 변신하는 robot(로봇)이 있다고 하자.
5번줄: string타입의 robot 변수를 boat(보트)로 초기화한다.
6번줄: bool타입의 변수 onLand(땅 위)를 false(거짓)으로 초기화 한다.
switch문으로 robot변수의 값을 비교하는 코드를 작성할 수 있다.
각 케이스에 맞는 코드를 작성하고 if문을 추가해서 더 자세하게 표현할 수 있다.
32번줄: case 외의 경우에 적용할 default(디폴트)값은 robot변수의 값을 나타내도록 한다.
$ 기호는 문자열 안에서 변수값을 표현할 때 사용할 수 있다.
$"문자열 {변수명} " 모양으로 표현하면 {변수명} 위치에 변수값이 나타난다.
$기호로 시작하는 문자열을 보간된 문자열이라고 한다.
문자열에 대한 내용은 이전 글(유니티34_C#_19_String)을 참고한다.
위 코드를 저장하고 실행하면 다음과 같은 결과를 볼 수 있다.
위 코드에서 robot 값이 boat이고, onLand 값이 false이다.
if조건문에서 !onLand는 not false, 즉 true(참)가 되므로 "항해하다"가 출력된 것이다.
만약 string robot = "rocket" 으로 바꾼 후 실행하면 default 케이스가 출력될 것이다.
참고로 "rocket으로 변신하다 "라는 문자열을 나타내려면 다음과 같이 할 수 있다.
print ( $"{robot}으로 변신하다" )
print ( robot + "으로 변신하다" )
둘 다 결과는 같지만 문자열 안에 변수가 많은 경우 $기호를 사용하는 것이 편하다.
끝.
Wraven...
'취미로 하는 게임코딩_gameCodingAsHobby > 유니티와 C# 개념 정리_Concept Summary' 카테고리의 다른 글
유니티와 C# 개념 정리_012_식별자와 키워드 (0) | 2021.09.27 |
---|---|
유니티와 C# 개념 정리_011_반복문 Loop (0) | 2021.09.10 |
유니티와 C# 개념 정리_009_조건문 if , ++ , -- (0) | 2021.09.01 |
유니티와 C# 개념 정리_008_Bool과 연산자 (0) | 2021.08.23 |
유니티와 C# 개념 정리_007_Unity의 변수 타입 (0) | 2021.08.23 |