삼항 연산자
간단한 if/else 분기는 삼항 연산자(ternary operator) 를 사용해 한 줄로 줄여 쓸 수 있습니다. 값을 두 후보 중 하나로 고르는 상황에서 코드를 짧고 읽기 쉽게 만들어 줍니다. 이름이 "삼항"인 이유는 세 개의 피연산자(조건식, 참일 때 값, 거짓일 때 값)를 받기 때문입니다.
기본 문법
조건식 ? 참일_때_값 : 거짓일_때_값조건식이 true 이면 ? 뒤의 값이, false 이면 : 뒤의 값이 전체 식의 결과가 됩니다. 결과는 변수에 대입하거나 그대로 return 할 수 있습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract TernaryExample {
// 두 값 중 큰 값을 반환합니다.
function max(uint256 a, uint256 b) public pure returns (uint256) {
return a > b ? a : b;
}
}if/else 와의 비교
위 코드는 아래 if/else 와 완전히 동일하게 동작합니다. 단지 표현이 더 간결할 뿐입니다.
if (a > b) {
return a;
} else {
return b;
}삼항 연산자는 "값을 고르는" 표현식이라 대입문 안에서도 쓸 수 있습니다. 예: uint256 fee = isVip ? 0 : 100;
삼항 연산자는 짧은 분기에만 쓰세요. 양쪽 값의 타입이 같아야 하며, 분기가 복잡해지거나 중첩(a ? b : c ? d : e)되면 가독성이 급격히 떨어지므로 일반 if/else 가 더 명확합니다.