2

モジュールrpc関数pmapで見つけました。そして、私はそれを使おうとしたときに立ち往生しました。

最初の質問 - 他のノードとの接続が必要ですか、lists:mapそれとも他のノードへの接続がないかのように動作しますか?

pmap他のノードに接続せずに実行しようとしましたが、例外が発生しました:

7> rpc:pmap( { erlang, '+' }, [], [[1,1],[2,3]] ).          
** exception exit: badrpc
     in function  rpc:check/2 (rpc.erl, line 745)

その後、別のローカル ノードを起動し、現在のノードに接続しました。しかし、それでも同じエラーが発生します。

rpc:pmap正しい使い方を教えてください。

ありがとう

PS 次のコードは期待通りに動作します (結果 3 を返します):

70> erlang:apply( erlang, '+', [1,2] ).
3
71> erlang:'+'(1,2).
3
4

1 に答える 1

6

rpc:map({Module, Function},ExtraArgs,List1) は、List1 のすべての要素 Elem に対して、apply(Module, Function, [Elem|ExtraArgs]) を並行して評価します。

したがって、erlang:'+' を使用した正しい構文は次のとおりです。

1> rpc:pmap( { erlang, '+' }, [2], [1,2,3] ).

[3,4,5]

2>

[1+2,2+2,3+2] を評価する

構文 rpc:pmap( { lists, sum }, [], [[1,2],[4,5]] ) は [1+2,4+5] を評価し、[3,9] を返します。

パスカル

于 2012-09-06T06:37:27.337 に答える