4
我正在學習Erlang,我試圖從一個進程傳遞消息到另一個從stdio輸入一些輸入。愛爾蘭badarith IO輸入
這是我有的代碼(我知道我可以使用正常的功能,但這不是主題)。
-module(play).
-compile(export_all).
calculateArea() ->
receive
{rectangle, W, H,SenderPID} -> SenderPID ! {area,W * H};
{circle, R,SenderPID} -> SenderPID ! {area,3.14 * R * R};
_ -> io:format("We can only calculate area of rectangles or circles.")
end,
calculateArea().
doStuff() ->
CalculateArea = spawn(play,calculateArea,[]),
{ok,Width} = io:fread("Enter width","~d"),
{ok,Height} = io:fread("Enter height","~d"),
CalculateArea ! {rectangle,Width,Height,self()},
receive
{area,Size} -> io:write(Size)
end,
io:fwrite("done").
當我運行play:doStuff().
我得到一個{badarith,[{play,calculateArea,0,[{file,"play.erl"},{line,10}]}]}
錯誤。
我不明白爲什麼,根據文檔,「〜d」會給我一個十進制值,它肯定看起來像是如果我打印它。
這裏有什麼?