Kotlinのlet、with、run、apply、alsoの一般的なシーン
3322 ワード
一般的なシーンの使用 let
処理にはnull可能なオブジェクトに対して一括して判定処理を行う必要がある with
同じクラスを呼び出すのに適した複数のメソッドの場合、クラス名の重複を省いて、直接クラスを呼び出すメソッドを使用できます. run
let,with関数の任意のシーンに適用されます.run関数はlet,withの2つの関数結合体であるため,正確にはlet関数が関数体内でitパラメータを用いてオブジェクトの代わりにしなければならないことを補い,run関数ではwith関数のように省略でき,インスタンスの公有属性と方法に直接アクセスできる一方,with関数のオブジェクトへの入力判定問題を補完し,run関数ではlet関数のように判定処理を行うことができる apply
全体的な機能はrun関数と似ています.唯一の違いは、オブジェクト自体が返され、run関数は閉パッケージ形式で返され、最後の行の値が返されます.この違いに基づいて、適用シーンはrun関数と少し違います.applyは一般的にオブジェクトインスタンスの初期化に使用される場合、オブジェクト内の属性を割り当てる必要があります. also
let関数に適用される任意のシーンでは、also関数とletは似ていますが、唯一の違いはlet関数の最後の戻り値が最後の行の戻り値であり、also関数の戻り値が現在のオブジェクトを返すことです.一般的には、複数の拡張関数チェーン呼び出しに使用できます.
処理にはnull可能なオブジェクトに対して一括して判定処理を行う必要がある
private var textView: TextView? = null
// let ?
var text = textView?.text
textView?.setTextColor(Color.BLACK)
// let
textView?.let {
var text1 = it.text
it.setTextColor(Color.BLACK)
}
同じクラスを呼び出すのに適した複数のメソッドの場合、クラス名の重複を省いて、直接クラスを呼び出すメソッドを使用できます.
var bean=Bean(" ",12)
// with
var s1=bean.name+bean.age
// with
with(bean){
var s="$name$age"
}
let,with関数の任意のシーンに適用されます.run関数はlet,withの2つの関数結合体であるため,正確にはlet関数が関数体内でitパラメータを用いてオブジェクトの代わりにしなければならないことを補い,run関数ではwith関数のように省略でき,インスタンスの公有属性と方法に直接アクセスできる一方,with関数のオブジェクトへの入力判定問題を補完し,run関数ではlet関数のように判定処理を行うことができる
全体的な機能はrun関数と似ています.唯一の違いは、オブジェクト自体が返され、run関数は閉パッケージ形式で返され、最後の行の値が返されます.この違いに基づいて、適用シーンはrun関数と少し違います.applyは一般的にオブジェクトインスタンスの初期化に使用される場合、オブジェクト内の属性を割り当てる必要があります.
let関数に適用される任意のシーンでは、also関数とletは似ていますが、唯一の違いはlet関数の最後の戻り値が最後の行の戻り値であり、also関数の戻り値が現在のオブジェクトを返すことです.一般的には、複数の拡張関数チェーン呼び出しに使用できます.