を3日くらいにらめっこして、Kotlinのスコープ関数の違いについてざっくりとまとめてみました。
確認環境
Android Studio 3.0 Canary 7
Kotlin 1.1.3-2
macOS Sierra 10.12.15
returnがレシーバ | returnが任意 | |
---|---|---|
レシーバの 拡張関数 |
apply | with run |
任意の型の 拡張関数 |
also | let |
レシーバの拡張関数のとき
- thisがラムダ式の内と外で参照先が違う
- レシーバのprotected, privateの関数は呼び出せない
- this@MainActivityのような記述で、外のthisも呼び出し可能
任意の型の拡張関数のとき
- thisがラムダ式の内と外で参照先が一緒
- レシーバをitで呼び出せる
- itの代わりに任意の変数名の定義も可能(可読性UPに繋がる)
returnがレシーバのとき
- 戻り値がレシーバ自身なので、用途に合っていれば1行コードが減る