这是我的kvs.erl:

-module(kvs).
-export([start/0, store/2, lookup/1]).

start() -> register(kvs, spawn(fun() -> loop() end)).

store(Key, Value) -> rpc({store, Key, Value}).

lookup(Key) -> rpc({lookup, Key}).

rpc(Q) ->
    kvs ! {self(), Q},
    receive
    {kvs, Reply} ->
        Reply
    end.

loop() ->
    receive
    {From, {store, Key, Value}} ->
        put(Key, {ok, Value}),
        From ! {kvs, true},
        loop();
    {From, {lookup, Key}} ->
        From ! {kvs, get(Key)},
        loop()
    end.

当我使用:erl -name zhao -setcookie abc启动erlang时

然后:rpc:call(fifar @ huihua.sohu-inc.com,kvs,store,[weather,cold])。

它显示错误:
([email protected])1> rpc:call([email protected],kvs,store,[weather,cold]).
** exception error: bad argument in an arithmetic expression
     in operator  -/2
        called as '[email protected]' - 'inc.com'

我认为这与linux主机名有关,

但是我使用这个linux shell:hostname -a

它不能显示“huihua.sohu-inc.com”

那我该怎么办,

谢谢

最佳答案

查看错误说明,您在二进制运算符“-”上有错误。您只需要更改

([email protected])1> rpc:call([email protected],kvs,store,[weather,cold]).


([email protected])1> rpc:call('[email protected]',kvs,store,[weather,cold]).

这样您就可以运行代码。 Erlang控制台将 [email protected] inc.com 视为两个不同的原子,并将[email protected]视为两个原子之间的差异操作。我建议您遵循erlang reference manual的引用:

08-25 18:33