Lambda式を用いて複数戻り値のメソッドを記述する
Lambda式を用いて複数戻り値のメソッドを記述する:
Kotlinでコードを書いて遊んでた時にどうしても複数戻り値のメソッドが欲しくなり、関数オブジェクトを埋め込むアイデアを思いついたのでメモ。
例えばInt型とString型の戻り値が欲しい時には以下のようにメソッドを記述する。
呼び出す際には戻り値を代入する箱を用意し、それを用いた代入用のlambda式を引数として記述する。
-スマート(主観)
-計算結果の一部をキャッシュしたい時に使えそう。
-少し複雑
-ラムダ式の中に複雑な処理を記述されてしまう場合がある。
勉強中なので、万が一このメモを目撃された方がいましたら問題点を指摘していただけると助かります。
随時追記していきます。
Kotlinでコードを書いて遊んでた時にどうしても複数戻り値のメソッドが欲しくなり、関数オブジェクトを埋め込むアイデアを思いついたのでメモ。
メソッドの記述
例えばInt型とString型の戻り値が欲しい時には以下のようにメソッドを記述する。fun multiResult(getInt:(Int)->Unit, getString:(String)->Unit){
...
val intResult=123
getInt(intResult)
...
val stringResult="Kotlin"
getString(stringResult)
...
}
メソッドの呼び出し
呼び出す際には戻り値を代入する箱を用意し、それを用いた代入用のlambda式を引数として記述する。fun test(){
var i=0
var s=""
multiResult({i=it},{s=it})
println(i.toString())
println(str)
}
>>123
>>Kotlin
メリット
-スマート(主観)-計算結果の一部をキャッシュしたい時に使えそう。
デメリット
-少し複雑-ラムダ式の中に複雑な処理を記述されてしまう場合がある。
最後に
勉強中なので、万が一このメモを目撃された方がいましたら問題点を指摘していただけると助かります。随時追記していきます。
コメント
コメントを投稿