スコープ関数
スコープ関数(Scope function)はオブジェクトのコンテキストで実行することを目的とした関数
対象の変数に対してまとめた処理を行いたい時に使う感じです
スコープ関数については以下を参照
https://kotlinlang.org/docs/scope-functions.html
こちらのサイトの説明がわかりやすいです
https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e
リンク切れするかもしれないのでこちらでも同様の内容をまとめておきます
機能リスト
function | 対象object | 戻値 | 拡張関数 |
---|---|---|---|
let | it | 指定可 | ○ |
run | this | 指定可 | ○ |
with | this | 指定可 | ✕ |
apply | this | 対象object | ○ |
also | it | 対象object | ○ |
let
主にnullableな変数に対して使用
nullの場合は処理しないとか
val text: String? = "test"
val length = text?.let { it.length } ?: 0
itは以下のように名前をつけることもできる
val length = text?.let { text ->
text.length
}
run
thisを省略したい時に使用
val length = text?.run { length } ?: 0
with
withは拡張関数ではないので以下のように使用
val length = with(text) { this?.length ?: 0 }
apply
対象自身を返したい場合に使用
class Datas(var text: String? = null, var length: Int = 0)
val datas = Datas().apply {
text = "test"
length = text!!.length
}
println("${datas.text} ${datas.length}")
also
自身を返したい時でitなので名前を変えて使いたい時に使用
val datas = Datas().also { datas ->
datas.text = "test"
datas.length = datas.text!!.length
}
Android Studio Dolphin 2021.3.1 Patch 1 built on September 30, 2022