4

Erlangでファーストクラスのパターンのサポートはありますか?

f(SomeMagicPattern) ->
  receive
    SomeMagicPattern -> ok
  end.

答えがノー (サポート) の場合、これを達成するための他のアプローチを知っていますか? たとえば、マクロを使用していますか?

4

2 に答える 2

4

いいえ、Erlang にはすぐに使用できるファーストクラスのパターンはありません。これを実装するには、次の 2 つの方法があります。

  1. マクロ。たとえば、EUnit や PropEr などのテスト ツールで広く使用されています。たとえば、EUnit には ?assertMatch マクロがあり、これは実際にはファースト クラスのパターンの例です。

    ?assertMatch({ok, _}, 結果)

  2. 変換を解析します。書くのは難しくなりますが、Erlang の抽象コードにアクセスして完全に書き直すことができるため、より強力になる可能性があります。ここには、解析変換に関する一連のチュートリアルへのリンクがあります: Is there a good, complete tutorial on Erlang parse transforms available?

于 2012-09-26T16:03:38.027 に答える
1

demeshchuk が指摘するように、これは事実ではありません。

ただし、言語に似たものを追加する提案があります。

http://www.erlang.org/eeps/eep-0029.html

これが良いアイデアかどうかは、まったく別の問題です...

于 2012-10-01T21:41:00.937 に答える