思いつくたびに追加していきます。備忘を兼ねて。
高階関数で括弧乗算
例えば(x-2)(y+3)のように括弧書きで乗算を表記することがありますが、それをコード中で表記できないか、というのがこのコードの趣旨です。関数を返す高階関数だと括弧が連続するので、これは使えるのではないかと思い書いてみました。
num Function(num) m(num j){
return (k)=>k * j;
}
これで
//int m = 1;
int x = 2;
int y = 6;
int z = m(x-2)(y+3);
と括弧表記した掛け算みたいなことができました。
解説
関数を返す関数はこのような構文です
返り値型 Function(引数1型) 関数名(引数2型 引数){
return (引数1){2つの引数を使った処理};
}
処理じゃなくて式の場合はアロー表記を使って
返り値型 Function(引数1型) 関数名(引数2型 引数){
return (引数1)=>2つの引数を使った計算;
}
とも書けます
今回の高階関数の場合だと、一度引数を与えてm(2)
とすると1つのnum型の引数をとってnum型の返り値を返す無名関数(num k)=>k*2
が返ってきます。
これにもう一回num型の引数を与えることで乗算された結果が返ってきます。