[Android] 015. Scope function

スコープ関数

スコープ関数(Scope function)はオブジェクトのコンテキストで実行することを目的とした関数
対象の変数に対してまとめた処理を行いたい時に使う感じです

スコープ関数については以下を参照
https://kotlinlang.org/docs/scope-functions.html

こちらのサイトの説明がわかりやすいです
https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e

リンク切れするかもしれないのでこちらでも同様の内容をまとめておきます

機能リスト

function対象object戻値拡張関数
letit指定可
runthis指定可
withthis指定可
applythis対象object
alsoit対象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