はじめに
公式の問題集「Kotlin Koans」を解きながらKotlinを学習します。
過去記事はこちら
- Introduction
- Classes
- Conventions
- Collections
- Properties
問題
これまでの例は、ライブラリ関数applyを使って書き直すことができます。この関数の実装をmyApplyと名付け、書いてみてください。
他のスコープ関数とその使用方法について学びます。
修正前コード.kt
fun <T> T.myApply(f: T.() -> Unit): T {
TODO()
}
fun createString(): String {
return StringBuilder().myApply {
append("Numbers: ")
for (i in 1..10) {
append(i)
}
}.toString()
}
fun createMap(): Map<Int, String> {
return hashMapOf<Int, String>().myApply {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
問題のポイント
スコープ関数を自作する問題です。
解答例
fun <T> T.myApply(f: T.() -> Unit): T {
f()
return this
}
fun createString(): String {
return StringBuilder().myApply {
append("Numbers: ")
for (i in 1..10) {
append(i)
}
}.toString()
}
fun createMap(): Map<Int, String> {
return hashMapOf<Int, String>().myApply {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}