首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何修正“因为成功的输入是[.]而合同是.”,“将永远不会回来”从Dialyzer?

我如何修正“因为成功的输入是[.]而合同是.”,“将永远不会回来”从Dialyzer?
EN

Stack Overflow用户
提问于 2018-07-02 14:01:23
回答 1查看 645关注 0票数 2

我正在使用透析器修复Erlang代码中的错误。

代码语言:javascript
运行
复制
io:format(IoDevice, "[]");

这一行会产生以下错误:

代码语言:javascript
运行
复制
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()]

我不明白问题出在哪里,有人能解释一下吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-02 14:37:40

我建议阅读io手册页。它的用法很简单:

代码语言:javascript
运行
复制
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指的是接受2个参数的函数format )接受atom()string()binary()作为第一个参数,以零或多个元素作为第二个参数的列表。根据您的代码,透析器检测到IoDevice是Erlang pid(),而不是string()binary()

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51137980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档