0

関数のerlangリファレンスから、 peername2 つの可能な戻り値があることが示されています。1 つは IP アドレスとポートで、もう 1 つはエラーです。問題は、エラーが発生した場合に両方をチェックする case ステートメントを作成するにはどうすればよいかということです。

これまでのところ、関数が実際に何か有用なものを返す場合にのみ機能するこのコードがありますが、エラーが発生した場合、タプルはどうなりますか?

ip_address(Socket) ->   
    {ok,{Ip,Port}} = inet:peername(Socket),
4

1 に答える 1

2

そのように:

ip_address(Socket) ->
    case inet:peername(Socket) of
        {ok, {Ip, Port}} ->
            io:format("ip ~p, port ~p~n", [Ip, Port]);
        {error, Error} ->
            io:format("error ~p~n", [Error])
    end.

または、次の 2 つの句で別の関数を使用できます。

ip_address(Socket) ->
    ip_address_1(inet:peername(Socket)).

ip_address_1({ok, {Ip, Port}}) ->
    io:format("ip ~p, port ~p~n", [Ip, Port]);
ip_address_1({error, Error}) ->
    io:format("error ~p~n", [Error]).
于 2013-03-15T21:36:15.707 に答える