올해의 모든 요일을 표시하기위한 코드입니다.왜 init : stop()이 직접 종료되지 않습니까?
if NewSec =< EndSec -> init:stop() end
가 run_calendar에서 처음 실행되지 않은 이유를 모르겠습니까?
init : stop()이 처음에는 실행될 수 있지만 실행되지는 않습니다.
무엇이 잘못 되었나요?
코드 :
-module(cal).
-export([main/0]).
main() ->
StartSec = calendar:datetime_to_gregorian_seconds({{2009,1,1},{0,0,0}}),
EndSec = calendar:datetime_to_gregorian_seconds({{2009,12,31},{0,0,0}}),
run_calendar(StartSec,EndSec).
run_calendar(CurSec, EndSec) ->
{Date,_Time} = calendar:gregorian_seconds_to_datetime(CurSec),
io:format("~p~n", [Date]),
NewSec = CurSec + 60*60*24,
if NewSec =< EndSec -> init:stop() end,
run_calendar(NewSec, EndSec).
결과 : 정지() 부드럽게 실행을 종료하려고 시도합니다 비동기 프로세스입니다
wk# erlc cal.erl
wk# erl -noshell -s cal main
{2009,1,1}
{2009,1,2}
{2009,1,3}
{2009,1,4}
{2009,1,5}
...
{2009,12,22}
{2009,12,23}
{2009,12,24}
{2009,12,25}
{2009,12,26}
{2009,12,27}
{2009,12,28}
{2009,12,29}
{2009,12,30}
{2009,12,31}
wk#
if를'not not ** 'run_calendar/2를 재귀 적으로 호출하는 것이 어떨까요?'If NewSec = < EndSec -> ok; true -> run_calendar (NewSec, EndSec) end.' 그리고 당신의 프로그램은 기발한 행동없이 정상적으로 종료 될 것입니다. –