gpt4 book ai didi

erlang - 如何从 Dialyzer 修复 "will never return since the success typing is [...] and the contract is.."?

转载 作者:行者123 更新时间:2023-12-02 00:32:52 25 4
gpt4 key购买 nike

我正在使用 Dialyzer 修复 Erlang 代码中的错误。

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

此行产生以下错误:

The call io:format(IoDevice::pid(),[91 | 93,...]) 
will never return since the success typing is
(atom() | binary() | string(),[any()]) -> 'ok'
and the contract is (Format,Data) -> 'ok'
when Format :: format(), Data :: [term()]

我无法理解问题所在,谁能解释一下?

谢谢

最佳答案

我推荐阅读 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

在上面的 dialyzer 中告诉你 io:format/2(format/2 意味着接受 2 个参数的函数 format)接受一个 atom()string()binary() 作为第一个参数,一个包含零个或多个元素的列表作为第二个参数。根据您的代码,透析器检测到 IoDevice 是 Erlang pid() 而不是 string()binary().

关于erlang - 如何从 Dialyzer 修复 "will never return since the success typing is [...] and the contract is.."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51137980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com