بازدید: ٩۵٢

توابع در سوئیفت (آموزش Swift)

بازگشت به صفحه اصلی آموزش سوییفت (Swift)

 

تابع مجموعه ای از دستورات است که با یکدیگر سازماندهی شده اند تا فعالیت خاصی را اجرا کنند. یک تابع سوئیفت می تواند همانند توابع C ساده یا پیچیده باشد. تابع این امکان را به ما می دهد تا مقادیر پارامتر را بصورت local یا global در درون فراخوان های تابع قرار دهیم.

 

 معرفی تابع: به کامپایلر در ارتباط با نام تابع، نوع مقدار بازگشتی و پارامترها می گوید.

تعریف تابع: بدنه تابع را مشخص می کند.

توابع سوئیفت حاوی نوع پارامتر و نوع مقدار برگشتی آن می باشند.

 

تعریف تابع

 

در سوئیفت تابع با استفاده از کلمه کلیدی func تعریف می شود. هنگامی که تابع جدیدی تعریف می شود، ممکن است یک یا چند مقدار را بعنوان پارامترهای ورودی به تابع داشته باشد و توابع را در بدنه اصلی پردازش کند و مقادیر را بعنوان انواع بازگشتی خروجی به توابع بازگرداند.

هر تابع برای خود نامی دارد که معمولا بیانگر نوع عملکرد آن می باشد. برای استفاده از یک تابع، کافی است نام آن تابع را صدا بزنید( فراخوانی کنید) و مقادیر ورودی را (آرگومان ها) که با انواع پارامترهای تابع مطابقت دارند، در آن قرار دهید.

همیشه باید آرگومان های تابع به همان ترتیب لیست پارامترهای تابع ارائه شوند. بعد از مقادیر بازگشتی نیز علامت -> می آید.  

 

نحوه نوشتن یک تابع

 

توابع در سوئیفت

 

اجازه بدهید نگاهی به دستورات زیر بیاندازیم. نام دانش آموز بعنوان نوع داده رشته ای در نظر گرفته می شود که در درون تابع student معرفی می شود و در زمان فراخوانی تابع Student، نام دانش آموز را باز می گرداند.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

فراخوانی یک تابع

 

فرض کنید تابعی به نام display تعریف کرده ایم تا یک مقدار عددی را نمایش دهد. در ابتدا تابعی به نام تابع display به همراه آرگومان no1 راه اندازی می شود که نوع داده آن عدد صحیح است. سپس آرگومان no1 به آرگومان a  تخصیص داده می شود که از این به بعد به همان نوع داده عدد صحیح اشاره دارد. اکنون آرگومان a به تابع بازگردانده می شود. در اینجا تابع display() مقدار عدد صحیح را نگه می دارد و هر زمان که تابع فراخوانده می شود، مقادیر عدد صحیح را برمی گرداند.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

پارامترها و مقادیر بازگشتی

 

سوئیفت پارامترهای تابعی قابل تغییری را ارائه می دهد که مقادیر بازگشتی آنها می توانند ساده یا پیچیده باشند. همانند زبان برنامه نویسی C و Objective C، توابع در سوئیفت ممکن است اشکال مختلفی داشته باشند.

 

توابع دارای پارامتر

 

برای دسترسی به یک تابع می توانید مقادیر پارامتر آن را در بدنه تابع قرار دهید. یک تابع می تواند یک یا چند پارامتر داشته باشد.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

توابع بدون پارامتر

 

ممکن است از توابعی استفاده کنید که پارامتری نداشته باشند.

 

نحوه نوشتن توابع بدون پارامتر

 

توابع در سوئیفت

 

در زیر می توانید یک نمونه توابع بدون پارامتر را مشاهده کنید:

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

توابع با مقادیر بازگشتی

 

همچنین از توابع برای بازگرداندن مقادیر رشته ای، عدد صحیح و اعشاری بعنوان انواع مقادیر بازگشتی استفاده می شود. برای پیدا کردن بزرگترین و کوچکترین عدد در یک آرایه، تابع Ls به همراه نوع داده عددی صحیح کوچک و بزرگ معرفی می شود.

ابتدا یک آرایه برای نگهداری مقادیر صحیح ایجاد می شود. سپس آرایه پردازش می شود و هر مقدار در آرایه خوانده شده و با مقدار قبلی آن مقایسه می شود. زمانی که مقدار مذکور کوچکتر از مقدار قبلی باشد، در آرگومان small ذخیره می شود در غیر اینصورت در آرگومان large ذخیره می شود و با فراخوانی تابع، مقادیر بازگردانده می شوند.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

توابعی بدون مقادیر بازگشتی

 

ممکن است توابعی وجود داشته باشند که دارای آرگومانهایی در درون تابع باشند و مقدار بازگشتی نداشته باشند. برنامه زیر a و b را بعنوان آرگومانهایی برای تابع sum() معرفی می کند. مقادیر آرگومانهای a و b با فراخوانی تابع sum() مشخص می شوند و مقادیر آن نمایش داده می شوند. بنابراین مقادیر بازگشتی را حذف می کند.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

توابعی با نوع بازگشتی Optional

 

سوئیفت دارای قابلیتی به نام قابلیت اختیاری است که به کمک آن از شر مشکلات معرفی یک اندازه ایمن خلاص می شوید. فرض کنید نوع مقادیر بازگشتی تابعی را عدد صحیح معرفی می کنید ولی اگر زمانی تابع یک مقدار رشته ای یا حتی nil بازگرداند، چه اتفاقی رخ می دهد. در این حالت کامپایلر خطایی را بر می گرداند. نوع داده بازگشتی Optional به همین منظور در نظر گرفته شده است تا از شر این مشکلات خلاص شوید.

توابع Optional(اختیاری) دارای دو شکل هستند value یا nil. با استفاده از کاراکتر کلیدی ? کنترل می کنیم که آیا تابع Optional ما یک مقدار را برمیگرداند یا یک nil را.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

از توابع optional  برای کنترل تهی بودن مقادیر(nil) استفاده می شود بنابراین زمان زیادی صرف دیباگ کردن  آن می شود تا دستورات را برای کاربر کارآمد و قابل خواندن کند.

 

اسامی پارامتری محلی و خارجی تابع

 

اسامی پارامتری محلی

اسامی پارامتری محلی تنها از داخل یک تابع در دسترس می باشند.

 

توابع در سوئیفت

 

در اینجا آرگومان number در تابع sample بعنوان یک متغیر داخلی معرفی می شود از اینرو تنها بصورت داخلی توسط تابع sample() قابل دسترس می باشد. در اینجا آرگومان number بعنوان بک متغیر محلی معرفی می شود ولی برای ارجاع به متغیر از خارج از تابع باید از دستورات زیر استفاده کنید:

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

اسامی پارامتری خارجی

 

اسامی پارامتری خارجی این امکان را به ما می دهند تا پارامترهای یک تابع را نامگذاری کنیم تا بدین ترتیب اهداف آنها برای ما مشخص تر شوند. بعنوان مثال می توانید دو پارامتر تابع را همانند زیر نامگذاری کنید سپس آن تابع را فراخوانی کنید:

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

حلقه ها در سوئیفت

 

پارامترهای variadic

 

هنگامی که می خواهیم تابعی را به همراه چندین آرگومان تعریف کنیم، می توانیم اعضا را بعنوان پارامترهای variadic تعریف کنیم. اگر بعد از اسامی پارامترها از کاراکترهای استفاده کنید، آنگاه پارامترهای شما بعنوان پارامترهای variadic شناخته می شوند.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

پارامترهای ثابت، متغیر و I/O

 

توابع بطور پیش فرض، پارامترها را بصورت ثابت در نظر می گیرند به گونه ای که کاربر می تواند آرگومانها را بصورت متغیر نیز برای توابع تعریف کند. قبلا شرح دادیم که از کلمه کلیدی let نیز برای معرفی پارامترهای ثابت و از کلمه کلیدی var برای پارامترهای متغیر استفاده می شود.

پارامترهای I/O در سوئیفت این قابلیت را به شما ارائه می دهند تا مقادیر پارامتر را حتی بعد از فراخوانی تابع که مقادیر آن تغییر داده می شود، حفظ کند. در ابتدای تعریف پارامتر تابع، کلمه کلیدی inout معرفی می شود تا مقادیر را نگه دارد.

از کلمه کلیدی inout اینگونه می توان نتیجه گرفت که مقادیر آن در یک تابع گذاشته می شوند و توسط تابع در دسترس بوده و تغییر داده می شوند و مجددا به خروجی تابع بازگردانده می شوند تا آرگومان اصلی را تغییر دهند.

متغیرها تنها بعنوان یک آرگومان برای پارامتر in-out قرار داده می شوند از اینرو مقادیر آن در درون و بیرون تابع تغییر داده می شوند. بنابراین نیازی نیست تا رشته ها و لیترال ها را بعنوان پارامترهای in-out معرفی کنیم. اگر کاراکتر & را قبل از یک نام متغیر قرار دهیم بدان معنا است که ما آرگومان را در پارامتر in-out می گذاریم.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

انواع تابع و موارد استفاده از آنها

 

هر تابع از یک عملگر خاص تبعیت می کند که این به پارامترهای ورودی و نتایج خروجی آن بستگی دارد.

 

توابع در سوئیفت

 

به مثال زیر توجه کنید:

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

در اینجا تابع با دو آرگومان no1 و no2 از نوع داده عدد صحیح تعریف می شود و البته مقدار بازگشتی آن نیز int تعریف شده است .

 

توابع در سوئیفت

 

در اینجا تابع از نوع رشته ای معرفی شده است. برخی توابع ممکن است دارای نوع داده void باشند این نوع توابع هیچ مقدار بازگشتی ندارند.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

تابع فوق بعنوان یک تابع void تعریف می شود که هیچ آرگومان یا مقدار برگشتی ندارد.

 

استفاده از انواع توابع

 

توابع ابتدا به همراه آرگومانهای رشته ای، عدد حقیقی و یا عدد صحیح قرار داده می شوند سپس آرگومانها بصوت ثابت و متغیر در توابع قرار داده می شوند:

 

توابع در سوئیفت

 

 در اینجا Sum نام تابع است که دارای متغیرهای عددصحیح a  و b می باشد که اکنون بعنوان یک متغیر برای تابعی به نام addition معرفی شده است. سپس هردو تابع addition و Sum دارای تعداد آرگومانهای مساوی هستند که از نوع عدد صحیح معرفی شده اند و مقادیر صحیح را بعنوان مرجع برمیگردانند.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

استفاده از تابع بعنوان پارامتر و مقدار بازگشتی

 

می توانیم خود تابع را بعنوان یک نوع پارامتر در تابع دیگری قرار دهیم:

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

توابع تودرتو

 

یک تابع تودرتو این امکان را برای شما فراهم می آورد تا یک تابع خارجی را با فراخوانی یک تابع داخلی، فراخوانی کنید.

 

توابع در سوئیفت

 

هنگامی که برنامه فوق را در درون Playground اجرا می کنیم، نتیجه زیر حاصل می شود:

 

توابع در سوئیفت

 

بازگشت به صفحه اصلی آموزش سوییفت (Swift)

 

طراحی سایت و سئو توسط ضابط