این مثال بسیار شبیه مثال قبلی است. دو عدد از ورودی در یافت میشود. اولی سن شماست و دومی سنی که دوست دارید بازنشسته شوید. سپس قرار است بشما بگوید که چند سال تا بازنشستگی دارید ( که خیلی ساده با کسر کردن سن کنونی از سن مورد نظر برای بازنشستگی بدست میآید) و چه سالی بازنشسته خواهید شد. این قسمت کمی چالشی است زیرا شما نیاز دارید با توابع خاصی سال کنونی را از سیستم استخراج کنید. تابع مورد نظر local_time است که در ماژول سیستمی calendar موجود است. از آنجایی که ما تنها به سال کنونی نیاز داریم باقی را نادیده می گیریم. خروجی این تابع بصورت زیر است:
{{Year, Month, Day}, {Hour, Minute, Second}}
کد برنامه به شرح زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
-module(ex6). -export([main/0]). main() -> try run() catch error:_Error -> io:format("Please Enter only Numeric type~n"); throw:negativeNumber -> io:format("Please Enter only positive number~n"); throw:outOfBound -> io:format("You are already retired~n") end. run() -> {Cur,Retire} = readInteger(), {{Year,_,_},_} = calendar:local_time(), io:fwrite("you have ~w years before retirement~n",[Retire - Cur]), io:fwrite("It's ~w so you be retired in ~w ~n",[Year,Year+(Retire - Cur)]). readInteger() -> {ok,[First]} = io:fread("What's you current age? ","~d"), {ok,[Second]} = io:fread("At what age would you like to retire? ","~d"), if First < 0 orelse Second < 0 -> throw(negativeNumber); First > Second -> throw(outOfBound); true -> ok end, {First,Second}. |
خط 14 ما تنها مقدار سال را به متغیر Year انتقال میدهیم و باقی را دور میریزیم. ضمنا سیستم برای مواقعی که سن مورد نظر برای بازنشستگی کمتر از سن کنونی شماس خطا خواهد داد.