[ Kotlin ] Unit과 Nothing의 차이점

2023. 10. 24. 15:05· Language.
목차
  1. Unit
  2.  
  3. Nothing
  4. 결론
728x90

Unit

Java의 void와 동일하다.

 

함수가 유용한 것을 반환하지 않거나 리턴해줄 값이 아무것도 없으면 암시적으로 Unit을 반환한다고 말합니다.

그리고 이러한 기능은 부작용이 있는 작업을 수행할 수 있습니다. 무언가 기록/인쇄하거나 반환 값 없이 조작을 수행합니다.

fun printHelloUnit(name: String?): Unit {
    if (name != null)
        println("Hello $name")
    else
        println("Hi there!")
}

//The Unit return type declaration is also optional. The above code is equivalent to:

fun printHello(name: String?) {
    if (name != null)
        println("Hello $name")
    else
        println("Hi there!")
}

위의 예에서 반환 유형을 Unit으로 명시적으로 언급하면 컴파일러에서는 Unit 유형이 중복되므로 명시적 언급을 제거하도록 제안합니다.

 

Nothing

문자 그대로 아무 것도 생명으로의 복귀가 없으며 게임은 거기서 끝납니다.를 의미합니다.

즉, 함수가 여기서에서 반환되지 않고 예외가 발생하거나 무한 루프에 들어갈 것입니다.

또한 반환 유형이 Nothing인 함수를 호출한 후에 작성하는 모든 코드는 컴파일러에서 연결할 수 없는 것으로 표시됩니다.

 

결론

  • Unit은 내가 돌아올 것이지만 당신이 관심을 가질만한 가치는 없습니다. 라고 말합니다.
  • Nothing은 나는 결코 돌아오지 않을 것입니다. 라고 말하는 것과 같습니다.

 

따라서 기능을 보다 명확하게 개별적으로 언급하는 데 도움이 됩니다.

class NothingClass {

    fun returnName(isSuccess: Boolean): String? {
        return if (isSuccess) {
            println("Sara")
            "Sara"
        } else null
    }

    fun reportError(): Nothing {
        println("no name found")
        throw RuntimeException()
        // var i = 1 // unreachable code
    }
// here if you don't specify Nothing explicitly, it shows compile time error
fun iWillAlwaysThrowException() : Nothing =  throwException("Unnecessary Exception")
}

fun main() {
val nothingClass = NothingClass()
val name: String = nothingClass.returnName(true) ?: nothingClass.reportError() // Compiles and the return type is String or Nothing 
val noName: String = nothingClass.returnName(false) ?: nothingClass.reportException()
}
728x90
저작자표시 (새창열림)

'Language.' 카테고리의 다른 글

Java의 예외 생성 비용, 비용 절감 방법  (0) 2024.04.25
Kotlin Delegation으로 클래스간 결합도 낮추기  (1) 2023.10.01
자바의 네 가지 참조 유형(Strong, Weak, Soft, Phantom)  (0) 2023.08.23
자바 Cleaner, PhantomReference 클래스  (0) 2023.07.27
[Kotlin] kapt란?  (0) 2023.04.16
  1. Unit
  2.  
  3. Nothing
  4. 결론
'Language.' 카테고리의 다른 글
  • Java의 예외 생성 비용, 비용 절감 방법
  • Kotlin Delegation으로 클래스간 결합도 낮추기
  • 자바의 네 가지 참조 유형(Strong, Weak, Soft, Phantom)
  • 자바 Cleaner, PhantomReference 클래스
khope
khope
개발만 하기는 심심하니 기록 또 기록..
250x250
khope
메모장 희망편
khope
전체
오늘
어제
  • Developer Perspective
    • 생존일지
    • essay
    • in khope.
    • Server & Infra.
    • Spring Framework.
    • Language.
    • Computer Science.
    • 개미 시리즈

인기 글

최근 글

hELLO · Designed By 정상우.v4.2.1
khope
[ Kotlin ] Unit과 Nothing의 차이점
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.