Lambda式を用いて複数戻り値のメソッドを記述する

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 


メリット

-スマート(主観)

-計算結果の一部をキャッシュしたい時に使えそう。


デメリット

-少し複雑

-ラムダ式の中に複雑な処理を記述されてしまう場合がある。


最後に

勉強中なので、万が一このメモを目撃された方がいましたら問題点を指摘していただけると助かります。

随時追記していきます。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)