블록체인 학습
0 XP

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 비용도 조금씩 증가합니다. 가장 자주 참이 되는 조건을 위쪽에 두면 평균적으로 빨리 빠져나와 효율이 좋아집니다.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.