코딩을 하다보면 계속해서 여러줄의 코드를 한 두줄로 줄일 수 있는지에 대해 계속 고민하게 됩니다.
이번 포스팅에서는 코딩의 효율을 높여주는 기술중에 가장 기본적이라고 할 수 있는 조건연산자에 대해 살펴보겠습니다.
"? 연산자"는 "물음표(?)"를 이용해서 간단한 조건문을 사용할 수 있는 연산자입니다.
항을 세개를 한줄에 표현해서 사용하는 연산자라고 해서 삼항연산자라고도 부릅니다.
?조건연산자의 기본 형은 다음과 같습니다.
(조건문) ? (ture의 입력값) : (false의 입력값)
조건문 항과 true입력값항과 false입력값 항이 ? 와 : 로 연결되어 있습니다.
조건문항이 참이면 (true입력값) 항에 있는 요소를 반환하고, 거짓이면 (false입력값)항에 있는 요소를 반환하는 연산입니다.
예제를 보도록 하겠습니다.
예를 들어 HP를 매개변수로 받아 플레이어가 살아있는지를 bool 변수로 리턴하는 IsAlive 함수를 만들었다고 해봅시다.
기본적인 if문을 사용한다면 이렇게 표현할 수 있습니다.
bool IsAlive(int HP)
{
bool isAlive;
if (HP > 0)
{
isAlive = true;
}
else
{
isAlive = false;
}
return isAlive;
}
간단한 식인데 좀 귀찮아 보입니다. 이제 ?연산자를 사용해서 같은 함수를 간단하게 작성해보겠습니다.
bool IsAlive(int HP)
{
bool isAlive = HP > 0 ? true : false;
return isAlive;
}
bool isAlive = HP > 0 ? true : false;
bool타입 변수 isAlive를 선언합니다.
그리고 그 변수에 (조건) HP>0 을 설정합니다. 이 조건문은 반드시 true나 false로 결정할 수 있는 조건문이어야 합니다.
그리고 조건문 뒤에 "?" 연산자를 붙인뒤 만일 조건이 참일경우 입력하기 원하는 값을 ":" 왼쪽에, 거짓일 경우 입력하기 원하는 값을 ":" 오른쪽에 입력합니다.
그럼 HP가 매개변수로 들어올때마다 0보다 큰지를 계산해서 true나 false로 반환해줍니다.
조건연산자 뒤에 true와 false일때 반환하는 값이 꼭 bool타입일 필요는 없습니다.
다른 예제를 하나 더 보겠습니다.
int CalDamage(int pow, int dfn)
{
int damage = pow > dfn ? pow - dfn : 0;
return damage;
}
만일 데미지 계산을 하는데, 공격력과 방어력을 계산해서 만일 공격력이 방어력 보다 크면 (공격력-방어력)한 것을 데미지로 반환하는 함수를 만들었습니다.
int damage = pow > dfn ? pow - dfn : 0;
매개 변수로 pow 와 dfn을 받아서 데미지를 계산합니다. 그런데 만약 (조건문) pow>dfn 이 참이라면 pow-dfn을 만일 거짓이라면 0 을 반환합니다.
그리고 damage를 리턴해줍니다.
이런식으로 간단한 사용이 가능합니다.
감사합니다.
'유니티 기초 스킬' 카테고리의 다른 글
| Null Reference Exception를 줄일 수 있는 연산자들(?. , ?[], ??, ??=) (0) | 2024.05.01 |
|---|---|
| 중복없는 랜덤 숫자 추출하기 (0) | 2024.04.25 |
| TextMeshPro(텍스트 메시 프로) 한글폰트 추가 방법 (0) | 2024.04.24 |