こんにちは😀
ラムダ式は何回かみてきましたが、実際ラムダ式が使いづらい場面もあります。
そういう場合には、普通に無名関数を使用した方がいいのでそういうケースをみてみます。
例えば、ラムダ式は「{引数->戻り値}」のように1行で書けるのが長所で、関数自体が複雑になると無名関数を使った方が便利になります。
以下の割り算の計算のように、if文で結果を分岐する場合は無名関数を使います。
fun(a,b):String{if(b==0) return “0” else return (a/b).toString()
そして、前回作成したshowCalc関数に上記の関数を追加してみましょう。
6、7行目を追加しています。
他の式はラムダ式を使用しているので、両者を併用できているのがわかります。
fun showCalc(opr:String):(Int,Int)->String{ return when (opr){ “+” -> {a,b -> (a+b).toString()} “-” -> {c,d -> (c-d).toString()} “*” -> {e,f -> (e*f).toString()} “/” -> fun(a,b):String{if(b==0) return “0” else return (a/b).toString() } else -> {g,h -> “${opr}???”} } }
main関数も割り算の条件を追加してみます。(6行目)
他は前回同様に、9行目のsetCalc関数からshowCalc関数を呼ぶ処理になっています。
fun main(args: Array<String>) { val a = 55 val b = 20 val oprs = listOf(“+”,”-“,”*”,”#”,”/”) for (opr in oprs) { println(setCalc(a,b,opr)) } }
実行します。
5番目に指定した割り算の式と解が出力されています。
ラムダ式も短い処理で使いやすいというメリットがありますが、無名関数と使い分けることで処理の幅も広がります。
今回はここまで🤚
では、また次回。