この質問は、パートナーが今日遭遇したいくつかの構文に関するものであり、その仕組みは理解していますが、なぜ許可されているのか (その用途は何ですか?) は理解していません。
このスニペットを見てください:
fun() -> ok end().
括弧の最後のペアがないと、次のようになります。
#Fun<erl_eval.20.82930912>
しかし、それらを使用すると、関数が評価されて次のようになります。
ok
私の質問は、なぜその構文が Erlang で許可されているのですか? 内容を書き出すだけでなく、すぐに呼び出すためだけに関数を作成する必要があるのはなぜですか? 実用的な用途はありますか?
私たちが考えることができる唯一のことは、fun の本体内にローカル変数を導入することでした (しかし、それは見苦しく、不明瞭に見えます)。
この他の構文は、前者と同じ概念に従っていますが、Erlang では許可されていないことに注意してください。
fun() -> fun() -> ok end end()().
(これは、関数 B を返す関数 A を意味します。そして、私は A を評価し (したがって B を生成し)、次に B を評価して を取得します'ok'
)。