Last active
October 25, 2020 04:06
-
-
Save omuomugin/3d819983e6bccf0a73947595ba44938b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// これはだめ | |
fun foo(s: String?) { | |
print(s.toUpperCase()) // s は nullable なので s? or s!! しないとメソッド呼び出しできない | |
} | |
// これはok | |
fun foo(s: String?) { | |
requireNotNull(s) // not null であることが事前条件に書かれてるのでこれ以降のスコープでは nonnullとして スマートキャストされる | |
print(s.toUpperCase()) | |
} | |
// 型とかでも同じ | |
fun foo(s: Any) { | |
require(s is String) // これ以降は s は Any ではなく String | |
} | |
// see also https://kotlinlang.org/docs/reference/whatsnew13.html#contracts | |
// といっても run time であることには変わりがないけれど |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment