if / else if / else
if 만으로는 "조건이 참일 때"만 처리할 수 있습니다. 하지만 현실의 분기는 보통 "참이면 A, 아니면 B" 처럼 양 갈래이거나, 여러 단계로 나뉩니다. 이때 else 와 else if 를 사용하면 조건에 따라 서로 다른 코드를 깔끔하게 실행할 수 있습니다.
else 와 else if 의 동작 방식
else 는 앞의 if 조건이 false 일 때 실행됩니다. 여러 조건을 순서대로 검사하고 싶다면 else if 를 이어 붙입니다. 위에서부터 차례로 조건을 검사하다가 처음으로 참이 되는 블록 하나만 실행하고, 나머지는 모두 건너뜁니다. 어느 조건도 맞지 않으면 마지막 else 가 실행됩니다. 결국 여러 블록 중 정확히 하나만 실행됩니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract GradeExample {
// 점수를 등급 문자열로 변환합니다.
function grade(uint256 score) public pure returns (string memory) {
if (score >= 90) {
return "A";
} else if (score >= 80) {
return "B";
} else if (score >= 70) {
return "C";
} else {
return "F";
}
}
}조건 검사 순서의 중요성
else if 사슬에서는 순서가 결과를 좌우 합니다. 위 예시에서 만약 score >= 70 을 맨 위에 두면, 95점도 70 이상이라는 조건에 먼저 걸려 "C" 가 반환되고 "A" 블록은 영원히 실행되지 않습니다. 따라서 보통 더 좁고 엄격한 조건부터 위에 배치합니다.
분기가 많아질수록 검사하는 조건 수가 늘어 gas 비용도 조금씩 증가합니다. 가장 자주 참이 되는 조건을 위쪽에 두면 평균적으로 빨리 빠져나와 효율이 좋아집니다.