Предупреждение о диализаторе в Эрланге - PullRequest
0 голосов
/ 02 июля 2018

Я использую диализатор для исправления предупреждений в коде erlang,

io: format (IoDevice, "[]");

эта строка выдает следующую ошибку

Вызов io: format (IoDevice :: pid (), [91 | 93, ...]) никогда не вернется, так как при успешном наборе будет (atom () | binary () | string (), [any ()]) -> 'ok', и контракт имеет значение (Format, Data) -> 'ok', когда Format :: format (), Data :: [term ()]

Я не могу понять, в чем проблема, может кто-нибудь объяснить это?

Спасибо

1 Ответ

0 голосов
/ 02 июля 2018

Рекомендую прочитать Страница справочника . Его использование просто:

1> io:format("hello ~p~n", [world]). % ~n means newline
hello world
ok
2> io:format("hello ~p~n", [<<"world">>]).             
hello <<"world">>
ok
3> io:format("hello ~s~n", [<<"world">>]).
hello world
ok

В приведенном выше диализаторе сказано, что io:format/2 (format/2 означает функцию format, которая принимает 2 аргумента) принимает atom() или string() или binary() в качестве 1-го аргумента и список с нулем или более элементов в качестве второго аргумента. Согласно вашему коду, диализатор обнаруживает, что IoDevice - это Erlang pid(), а не string() или binary().

...