我正在使用透析器来修复erlang代码中的警告,
io:format(IoDevice,“ []”);
此行产生以下错误
调用io:format(IoDevice :: pid(),[91 | 93,...])将永远不会返回,因为成功键入是(atom()| binary()| string (),[any()])->'ok',并且当Format :: format(),Data :: [term()] 时,合同为(Format,Data)->'ok' strong>
我无法理解问题是什么,任何人都可以解决吗?
谢谢
答案 0 :(得分:4)
我建议阅读io manual page。它的用法很简单:
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()
或{{1} }作为第一个参数,并将具有零个或多个元素的列表作为第二个参数。根据您的代码,透析器检测到binary()
是Erlang IoDevice
而不是pid()
或string()
。