Contract?


<aside> πŸ’‘ contract μ½”λ“œλ₯Ό μ»΄νŒŒμΌλŸ¬μ—κ²Œ 미리 μ΄ν•΄μ‹œμΌœμ£ΌκΈ° μœ„ν•΄ μ‚¬μš©

</aside>


β†’ κ·Έλž˜μ„œ μš°λ¦¬κ°€ νŽΈν•˜κ²Œ μŠ€μ½”ν”„ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 있음

β†’ μŠ€μ½”ν”„ ν•¨μˆ˜μ™€ ν•¨κ»˜ 널 체크도 ν•  수 있음


예제


<aside> πŸ’‘ @ExperimentalContracts == contractλ₯Ό μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜μ— ν‘œκΈ°

@ExperimentalContracts
        fun isNotNullAndReturnBoolean(value: Any?): Boolean {
            contract {
                returns(true) implies (value != null)  // valueκ°€ null이 μ•„λ‹ˆλ©΄, trueλ₯Ό λ¦¬ν„΄ν•˜λ©΄μ„œ μ»΄νŒŒμΌλŸ¬μ—κ²Œ valueκ°€ null이 μ•„λ‹˜μ„ μ΄ν•΄μ‹œμΌœμ€Œ.
            }

            return value != null 
        }

</aside>


<aside> πŸ’‘ contract{} 의 returns λŠ” μ‹€μ œ μ½”λ“œ λ™μž‘μ— λ°˜μ˜λ˜λŠ”κ²ƒμ΄ μ•„λ‹ˆλΌ μ»΄νŒŒμΌλŸ¬μ—κ²Œ κ²°κ³Όλ₯Ό μ „ν•˜κΈ° μœ„ν•¨

</aside>