Kotlin Contracts
- CallsInPlace
- 컴파일러가 람다 함수가 호출되는 방식과 해당 매개변수와 상호작용 하는 방식을 이해하는데 도움이 됨
- AT_MOST_ONCE
- AT_LEAST_ONCE
- EXACTLY_ONCE
- UNKNOWN
inline fun <T> customRun(block: () -> T): T { contract { callsInPlace(block, AT_MOST_ONCE) } return block() }
- 컴파일러가 람다 함수가 호출되는 방식과 해당 매개변수와 상호작용 하는 방식을 이해하는데 도움이 됨
- InvocationKind
- 호출시 함수가 작동하는 방식을 지정. 옵션은 아래 두 개
- returns(true)
- implies(this ≠ null)
fun getUserById(id: Int?): User? { contract { returns(true) implies (id != null) } // Your code here }
- 호출시 함수가 작동하는 방식을 지정. 옵션은 아래 두 개
사용하는 이유
- 타입체킹 향상
- null 안정성
- 코드 최적화
- 향상된 라이브러리 func
Uploaded by N2T