こんにちは😀
今回も、関数とラムダ式をみていきます。
戻り値を関数にできる処理を書いていきます。
例えば以下のような式を書いてみましょう。
以下のshowCalc関数は、引数をString型として、戻り値を「(Int,Int)->String」と関数(ラムダ式)にしています。
その戻り値は、whenを使って条件で出し分けています。
3〜5行目は、足し算・引き算・掛け算を行なっています。
解(ラムダ式の右側)に関しては、6行目に合わせるためString型に変換しています。
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()} else -> {g,h -> “${opr}???”} } }
そして、setCalc関数を作成して、showCalc関数を呼び出しましょう。
3行目で定義し、5行目で処理を実行しています。
fun setCalc(a:Int,b:Int,opr:String):String{ val calc = showCalc(opr) return “${a}${opr}${b}=${calc(a,b)}” }
main関数は、setCalc関数を呼んでいます。(9行目)
fun main(args: Array<String>) { val a = 55 val b = 20 val oprs = listOf(“+”,”-“,”*”,”#”) for (opr in oprs) { println(setCalc(a,b,opr)) } }
コンパイルすると、showCalc関数の6行目でWarning(警告)が出ます。
これは、ラムダ式内の左側の変数を右側で使用していないためです。
今回は、勉強のために使用しているのここは無視します。
実行しましょう。
それぞれ計算式と解が出力されます。
4つ目は計算式でないので???が出力されています。
ここまで何回かラムダ式をみていますが、関数の応用は幅広いですね。
使い慣れて、スッキリした処理のしやすいロジックが書けるとテストの際も回数やミスが抑えられそうです。
今回はここまで🤚
では、また次回。
※追記
上記のWarningは以下のように、使用しない変数を「_」とすると警告が出ません。
else -> {_,_ -> “${opr}???”}
コメント