我是Erlang的新手程序员,我坚持以下几点:
myread() ->
{_, MyData } = file:read_file( "hands.txt" ),
io:format( "hands-out.txt", "~w", MyData ).
从shell调用myread()时产生:
** exception error: no function clause matching io:request("hands-out.txt",
{format,"~w", <<"3h 5h 7h 8h 3h 5h 7h 8h q"...>>})
(io.erl, line 556) in function io:o_request/3 (io.erl, line 63)
任何帮助都将不胜感激。
答案 0 :(得分:4)
两件事:
"hands-out.txt", "~w"
必须是一个字符串:"hands-out.txt: ~w"
并且替换~w
的数据需要是一个列表。所以:
io:format( "hands-out.txt: ~w", [MyData] ).
请参阅http://erlang.org/doc/man/io.html#format-2
此外,您应该在file:read_file/1
的回复中对状态值进行模式匹配。在您的版本中,由于您使用的是{error, Reason}
,因此您将使用_
错误,该错误将在{ok, MyData } = file:read_file( "hands.txt" )
处返回,并且您将打印错误原因而不是文件,这可能会造成混淆。
因此,如果您想要在读取错误时崩溃,请将其设为myread() ->
case file:read_file( "hands.txt" ) of
{ok, MyData } ->
io:format( "hands-out.txt: ~w", [MyData] );
{error, Error} ->
io:format("Error: ~w~n", [Error])
end.
,如果您想要处理该情况,请执行以下操作:
{{1}}