1

spawn_linkを使用して動的な子を生成するスーパーバイザーがあります。新しい子を作成するとき:

create_my_child().

それは戻ります:

{ok, <0.324.0>}

だからすべてが幸せ。コンソールから子に変数を割り当てようとしています:

{ok,X} = create_my_child()

次のようなエラーが発生します:

例外エラー:右側の値が一致しません

そして言う:

{スーパーバイザー、do_start_child_i、3

私はすべての難しい仕事をしました、子プロセスのためにこれをすることは可能ですか?

4

1 に答える 1

2

コンソールでこれらすべてを実行している場合、Xはすでに最初のspawn_link呼び出しのPidを返すようにバインドされており、その後の呼び出しとの一致の試行{ok, X}create_my_child()「右側の一致なし」エラーで失敗します。

Erlangでは、変数は変更できないため、Xすでに値が設定された後で再割り当てすることはできません。コンソールでは、シェルの変数をクリアするために行うことができますf()が、より簡単な解決策は、単に別の変数をバインドすることです(つまりX2

于 2012-10-27T16:42:21.660 に答える