Open9
Kotlin 1.6 release
what`s new
Stable exhaustive when statements for enum, sealed, and Boolean subjects
when式の分岐チェックがより厳格になりますよというものの模様
sealed class Country(val name: String) {
object Japan: Country(name = "日本")
object Sweden: Country(name = "スウェーデン")
}
fun Country.isUsedYen(): Boolean =
when(this) {
is Country.Japan -> true
is Country.Sweden -> false
}
fun externalFunction(country: Country) {
// falseに対する分岐がないためコンパイラーが警告を発する=>1.7以降では警告ではなくエラーになる予定の模様
when(country.isUsedYen()) {
true -> return
}
when(country) {
// Country.Swedenに対する分岐がないためコンパイラーが警告を発する=>1.7以降では警告ではなくエラーになる予定の模様
is Country.Japan -> TODO()
}
}
Stable suspending functions as supertypes
coroutinesがまずまだそもそもわかってない...
Stable suspend conversions
coroutinesがまずまだそもそもわかってない...
Stable instantiation of annotation classes
アノテーションクラスを具象化できるようにする機能が正式導入となった模様
どこで活かせるのか未だわからず...
Improved type inference for recursive generic types
型推論が少しパワーアップした模様
詳細が理解できず...
Changes to builder inference
???
Support for annotations on class type parameters
型パラメーターにもアノテーションを付与できるようになった模様
どう活かせるのか?未だイメージわかず...
標準ライブライの変更
New readline functions
// Null非許可な読み込み
readLine()!! // earlier Not Null Assertion Operatorを使った直感的でない記述
readln() // since 1.6 専用関数で読みやすくなった
// Null許可な読み込み
readLine() // earlier Null許可・非許可がわかりずらい
readlnOrNull() // since 1.6 関数名に現れていてわかりやすくなった
Stable collection builders
コレクションの合成とかによく使われるのか?
val x = listOf('b', 'c')
val y = buildList {
add('a')
addAll(x)
add('d')
}
Stable Duration API
Improvements to the existing API
Comparable.compareTo()
で中置記法が使えるようになった