언어/Kotlin

함수 리턴의 표현 Unit과 Nothing

원석💎-dev 2022. 3. 17. 23:32
반응형

코틀린에서는 함수의 리턴이 없다는 것을 두 가지 방법으로 표현합니다. 바로 UnitNothing입니다.

 

1. Unit

Unit은 아무런 값도 리턴하지 않는다는 의미입니다.

fun print(): Unit {
   println("Hello world!")
   return
}

 

2. Nothing

Nothing은 리턴이라는 행위 자체를 하지 않는다 또는 예외를 발생시킬 수 있다.

fun print(): Nothing {
   println("Hello world!")
}
fun throwException(): Nothing {
   throw IllegalStateException()
}

 

3. Unit?과 Nothing?는 사용하지 말자

[[EffectiveKotlin] 가독성을 목표로 설계하라]의 "Unit?를 리턴하지 말라" 설명했던 내용과 마찬가지다.
 
- Unit?는 반환값이 없다는 것 NULL을 리턴한다.
- Nothing?는 리턴이라는 행위 자체를 하지 않거나, 예외를 발생 시키거나 Null을 리턴한다.
 
Unit?보다 Nothing?은 더 큰 혼란을 줄 수 있다.
 

4. 결론

 Nothing과 Unit은 기능적으로 큰 차이보다 팀 내에서 왜 사용하는지에 대한 공유만 적절히 이루어지면 커뮤니케이션코드리뷰 시 이점을 가질 수 있다고 생각된다.

 

반응형