スコープ関数 (Kotlin) |
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS) |
読み:すこーぷかんすう |
外語:scope functions |
品詞:名詞 |
Kotlinにおいて、引数にとる関数のスコープを変更するための関数。
|
概要 |
C/C++の場合、関数内で {} で囲めばそれがスコープになる。スコープ内で定義した変数は、スコープ外に波及しない。
Kotlinの場合、C/C++と違ってプログラム中で唐突に {} で囲ってスコープにすることはできない。同様のことをしたい場合は、たとえ返却値が不要な場合であってもその部分をスコープ関数にする必要がある。
特徴 |
目的 |
結果を変数に代入してそれを使い回すよりも、結果を例えばスコープ関数letを用いit等で参照する方が、{}で影響範囲が明確になるという利点がある。
影響範囲を明確化することは、意図しない箇所での誤った参照、代入や書き換えといったバグを避けることもなり、開発効率ならびに後からソースを見た時の見やすさ向上にも大きく寄与する。
種類 |
Kotlin 1.0で4種類、Kotlin 1.1からalsoが追加され5種類となっている。
使い方は自由であるが、その主たる目的で大きく2種類に分けられ、スコープ内で対象オブジェクトがどう設定されるかでも2種類に分けられる。
使い分け |
スコープ関数の戻り値を使う場合は、元のインスタンスか任意の型かで選択することになる。
また、元のオブジェクトをthisで参照するかitで参照するかも都合に合わせて選択できる。
元の参照がthisになるものを使う場合、thisは省略可能であるが、スコープの内外でthisの意味が変わってしまうことに注意が必要である。
元の参照がitになるものを使う場合、itは省略できないが、スコープの内外でthisの意味が変わらないという利点がある。
ラムダ式 |
元の参照がitになるタイプのスコープ関数(alsoおよびlet)は、{} 内にラムダ式を記述することで、itに別名を与えることができる。
たとえば obj?.let { hoge -> ...} のように書くことで、it の代わりの変数名を指定することができる(この例の場合はhoge)。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |