0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dartのテクニカ - 実装のためのコードスニペット -

Last updated at Posted at 2021-06-09

思いつくたびに追加していきます。備忘を兼ねて。

Added at: 31st Jul. '22

「思いつくたびに追加」と銘打ちつつ随時更新詐欺("即死記事"化)をしている現状 (cf: 「随時更新」云々については@nkayさんの記事を参照1)

高階関数で括弧乗算

例えば(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型の引数を与えることで乗算された結果が返ってきます。


  1. 【随時更新】←これがついているQiita記事の4割は随時更新されないという事実

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?