توابع در برنامه نویسی کاتلین
توابع در برنامه نویسی کاتلین
در این درس از سری آموزش های برنامه نویسی سایت سورس باران، شما در مورد توابع در برنامه نویسی کاتلین، ساختار و نحوه ایجاد آن ها را یاد خواهید گرفت.
در برنامه نویسی، تابع یک گروه از عبارات مرتبط است که یک کار خاص را انجام می دهد.
از توابع برای تقسیم یک برنامه بزرگ به قطعات کوچکتر و مدولار استفاده می شود. به عنوان مثال، شما باید دایره ای را بر اساس ورودی کاربر ایجاد و رنگ آمیزی کنید. برای حل این مشکل می توانید دو عملکرد ایجاد کنید:
- تابع () createCircle
- تابع () colorCircle
تقسیم یک برنامه پیچیده به اجزای کوچکتر، برنامه ما را سازمان یافته و قابل کنترل می کند. علاوه بر این، از تکرار جلوگیری می کند و کد را قابل استفاده مجدد می کند.
انواع توابع در برنامه نویسی کاتلین
بسته به اینکه یک تابع توسط کاربر تعریف شده باشد یا در کتابخانه استاندارد موجود باشد، دو نوع تابع وجود دارد:
- توابع کتابخانه استاندارد کاتلین
- توابع تعریف شده توسط کاربر
توابع کتابخانه استاندارد کاتلین
توابع استاندارد کتابخانه کاتلین، توابع داخلی آماده و پیشفرض هیستند که برای راحتی استفاده در دسترس هستند. مثلا،
- print () یک تابع کتابخانه است که پیام را به استریم خروجی استاندارد (مانیتور) چاپ می کند.
- sqrt () ریشه مربع یک عدد را برمی گرداند (مقدار دو برابر)
1 2 3 4 5 |
fun main(args: Array<String>) { var number = 5.5 print("Result = ${Math.sqrt(number)}") } |
هنگامی که برنامه را اجرا می کنید، خروجی کد به شکل زیر است:
1 |
Result = 2.345207879911715 |
توابع تعریف شده توسط کاربر در کاتلین
همانطور که گفته شد، خودتان می توانید توابع ایجاد کنید. به این توابع توابع تعریف شده توسط کاربر گفته می شود.
چگونه یک تابع تعریف شده توسط کاربر در کاتلین ایجاد کنیم؟
قبل از اینکه بتوانید از توابع (اصطلاحا آن ها را فراخوانی کنید) استفاده کنید، باید آن را تعریف کنید.
نحوه تعریف یک تابع در کاتلین:
1 2 3 |
fun callMe() { // function body } |
برای تعریف یک تابع در کوتلین، از کلیدواژه fun استفاده می شود. سپس نام تابع (شناسه) می آید. در اینجا ، نام تابع callMe است.
در برنامه فوق، پرانتز () خالی است. یعنی این تابع هیچ آرگومانی را قبول نمی کند. بعداً در این مقاله با آرگومان ها آشنا خواهید شد.
کدهای داخل آکولاد {} بدنه تابع است.
چگونه یک تابع فراخوانی می شود؟
برای اجرای کدها در داخل بدنه تابع، باید تابع را فراخوانی کنید. نحوه انجام این کار به صورت زیر است:
1 |
()callme |
این عبارت عملکرد ()callMe را که قبلاً اعلام شده، فراخوانی می کند.
مثال: یک برنامه ساده با تابع در کاتلین
1 2 3 4 5 6 7 8 9 |
fun callMe() { println("Printing from callMe() function.") println("This is cool (still printing from inside).") } fun main(args: Array<String>) { callMe() println("Printing outside from callMe() function.") } |
هنگامی که برنامه را اجرا می کنید، خروجی کد به شکل زیر است:
1 2 3 |
Printing from callMe() function. This is cool (still printing from inside). Printing outside from callMe() function. |
تابع () callMe در کد بالا هیچ آرگومانی را قبول نمی کند.همچنین، تابع هیچ مقداری را بازگشت نمی دهد.
بیایید یک مثال دیگر از توابع بزنیم. این تابع آرگومان ها را می پذیرد و همچنین مقدار را برگشت می دهد.
مثال: جمع دو عدد با استفاده از تابع در کاتلین
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
fun addNumbers(n1: Double, n2: Double): Int { val sum = n1 + n2 val sumInteger = sum.toInt() return sumInteger } fun main(args: Array<String>) { val number1 = 12.2 val number2 = 3.4 val result: Int result = addNumbers(number1, number2) println("result = $result") } |
هنگامی که برنامه را اجرا می کنید، خروجی کد به شکل زیر است:
1 |
result = 15 |
توابع با آرگومان و مقدار بازگشتی چگونه کار می کنند؟
دو آرگومان number1 و number2 از نوع Double در هنگام فراخوانی عملکرد به تابع ()addNumbers منتقل می شوند. این آرگومان ها را آرگومان های واقعی می نامند.
1 |
(result = addNumbers(number1, number2 |
پارامترهای n1 و n2 آرگومان های ارسالی را می پذیرد. این آرگومان ها را آرگومان های صوری (یا پارامتر) می نامند.
در برنامه نویسی کاتلین، آرگومان ها با استفاده از ویرگول از هم جدا می شوند. همچنین نوع آرگومان صوری باید صریحاً مشخص شود.
توجه داشته باشید که، نوع داده آرگومان ها واقعی و صوری باید مطابقت داشته باشد، به عنوان مثال، نوع داده اولین آرگومان واقعی باید با نوع اولین آرگومان صوری مطابقت داشته باشد. به همین ترتیب، نوع آرگومان دوم واقعی باید با نوع آرگومان صوری دوم و غیره مطابقت داشته باشد.
1 |
return sumInteger |
در اینجا return sumInteger یک گزاره بازگشتی است. این کد تابع () addNumbers را خاتمه می دهد و کنترل برنامه به تابع ()main می رود.
در برنامه، sumInteger از تابع ()addNumbers بازگشت می یابد. این مقدار به نتیجه متغیر اختصاص داده می شود.
نکته:
- هم متغیر sumInteger و هم result از نوع Int هستند.
- نوع بازگشتی تابع در تعریف تابع مشخص شده است.
1 2 3 4 |
// return type is Int fun addNumbers(n1: Double, n2: Double): Int { ... .. ... } |
اگر تابع هیچ مقداری را بازگشت نمی دهد، نوع بازگشت آن unit است. اگر نوع بازگشت Unit باشد ، تعیین نوع بازگشت در تعریف تابع اختیاری است.
مثال: نمایش نام با استفاده از تابع در کاتلین
1 2 3 4 5 |
fun main(args: Array<String>) { println(getName("John", "Doe")) } fun getName(firstName: String, lastName: String): String = "$firstName $lastName" |
هنگامی که برنامه را اجرا می کنید، خروجی کد به شکل زیر است:
1 |
John Doe |
در اینجا، تابع ()getName دو آرگومان String می گیرد و یک String را بازگشت می دهد.
اگر تابع یک عبارت واحد را بازگشت دهد، اجباری برای استفاده از آکولاد {} در بدنه تابع پس از = نمی باشد.
انتخاب صریحاً نوع بازگشت در این حالت اختیاری است زیرا نوع کامپایلر می تواند توسط کامپایلر استنباط شود. در مثال بالا می توانید تغییرات زیر را ایجاد کنید؛
1 |
fun getName(firstName: String, lastName: String): String = "$firstName $lastName" |
و
1 |
fun getName(firstName: String, lastName: String) = "$firstName $lastName" |
لیست جلسات قبل آموزش برنامه نویسی کاتلین
- معرفی کاتلین، Kotlin Hello World – اولین برنامه کاتلین
- انواع متغیرهای پایه در کاتلین
- عملگرهای برنامه نویسی کاتلین
- تبدیل نوع در برنامه نویسی کاتلین
- عبارت ها، گزاره ها و بلوک ها در برنامه نویسی کاتلین
- کامنت ها در برنامه نویسی کاتلین
- ورودی / خروجی پایه در برنامه نویسی کاتلین
- عبارت if در برنامه نویسی کاتلین
- عبارت when در برنامه نویسی کاتلین
- حلقه های while و do … while در برنامه نویسی کاتلین
- حلقه for در برنامه نویسی کاتلین
- عبارت break در برنامه نویسی کاتلین
- عبارت continue در برنامه نویسی کاتلین
دیدگاه شما