🔍 코틀린의 if 식과 return, 그리고 Nothing 타입

1. 코틀린의 if는 "식(Expression)"이다

2. if 식 내부에서 return 사용의 편리함

때로는 if 식의 특정 조건에서 함수를 즉시 종료하고 값을 반환해야 할 때가 있습니다. 이때 if 식 내부에 return을 사용하면 코드가 간결해질 수 있습니다.

fun renamePackage(fullName: String, newName: String): String {
    val i = fullName.lastIndexOf('.') // 마지막 '.'의 위치를 찾음

    // if 식이 prefix 변수에 값을 할당하는 데 사용됨
    val prefix = if (i >= 0) {
        fullName.substring(0, i + 1) // '.'이 있으면, 그 부분까지를 prefix로 사용
    } else {
        // '.'이 없으면 (패키지 이름이 아니라 단순 이름이면)
        // prefix를 계산할 필요 없이 바로 newName을 반환하고 함수 종료
        return newName
    }

    // 위 if-else 문에서 return newName이 실행되지 않은 경우에만 이 코드가 실행됨
    return prefix + newName
}

위 예제에서 if (i >= 0) 조건이 false일 경우 (else 블록 실행), return newName을 만나 renamePackage 함수는 그 즉시 newName을 반환하며 종료됩니다. prefix 변수에 실제로 어떤 값이 할당되는 과정은 일어나지 않고, 그 아래의 return prefix + newName 코드도 실행되지 않습니다

3. Nothing 타입의 등장

여기서 중요한 개념이 Nothing 타입입니다.

4. Nothing 타입의 특징: 모든 타입의 하위 타입

5. UnitNothing의 차이