تابع

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

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

fun methodName()
{
   code to execute;
}

به برنامه ساده زیر توجه کنید. در این برنامه از یک تابع برای چاپ یک پیغام در صفحه نمایش استفاده شده است :

  1: fun printMessage()
  2: {
  3:     println("Hello World!")
  4: }
  5: 
  6: fun main(args: Array<String>)
  7: {
  8:     printMessage()
  9: }
Hello World!

در خطوط 8-5 یک تابع تعریف کرده‌ایم. مکان تعریف آن در برنامه مهم نیست. به عنوان مثال می‌توانید آن را زیر تابع ()main تعریف کنید. می‌توان این تابع را در داخل تابع دیگر صدا زد (فراخوانی کرد). تابع دیگر ما در اینجا تابع ()main است که می‌توانیم در داخل آن نام تابعی که برای چاپ یک پیغام تعریف کرده‌ایم (یعنی تابع ()printMessage) را صدا بزنیم.
در تعریف تابع بالا ابتدا کلمه کلیدی fun آمده است که نشان دهنده آن است که ما می خواهیم یک تابع تعریف کنیم. نام تابع ما ()printMessage است.
به این نکته توجه کنید که در نامگذاری تابع از روش کوهان شتری (اولین کلمه با حروف کوچک نوشته می شود و بقیه کلمات با حرف بزرگ شروع می شوند) استفاده کرده‌ایم. این روش نامگذاری قراردادی است و می‌توان از این روش استفاده نکرد، اما پیشنهاد می‌شود که از این روش برای تشخیص توابع استفاده کنید. بهتر است در نامگذاری توابع از کلماتی استفاده شود که کار آن تابع را مشخص می‌کند مثلاً نام‌هایی مانند goToBed یا openDoor.
همچنین به عنوان مثال اگر مقدار برگشتی تابع یک مقدار بولی باشد می‌توانید اسم تابع خود را به صورت یک کلمه سوالی انتخاب کنید مانند isLeapyear یا isTeenager … ولی از گذاشتن علامت سؤال در آخر اسم تابع خودداری کنید. دو پرانتزی که بعد از نام می‌آید، نشان دهنده آن است که، نام متعلق به یک تابع است. در این مثال در داخل پرانتزها هیچ چیزی نوشته نشده چون پارامتری ندارد. در درسهای آینده در مورد توابع بیشتر توضیح می‌دهیم.
بعد از پرانتزها دو آکولاد قرار می‌دهیم که بدنه تابع را تشکیل می‌دهد و کدهایی را که می‌خواهیم اجرا شوند را در داخل این آکولادها می‌نویسیم. در داخل تابع ()main تابعی را که در خط 1 ایجاد کرده‌ایم را صدا می‌زنیم. برای صدا زدن یک تابع کافیست نام آن را نوشته و بعد از نام پرانتزها را قرار دهیم.
اگر تابع دارای پارامتر باشد باید شما آرگومانها را به ترتیب در داخل پرانتزها قرار دهید. در این مورد نیز در درسهای آینده توضیح بیشتری می‌دهیم. با صدا زدن یک تابع کدهای داخل بدنه آن اجرا می‌شوند. برای اجرای تابع ()printMessage برنامه از تابع ()main به محل تعریف تابع ()printMessage می‌رود. مثلاً وقتی ما تابع ()printMessage را در خط 8 صدا می‌زنیم برنامه از خط 8 به خط 1، یعنی جایی که تابع تعریف شده می‌رود و کدهای بدنه آن یعنی خط 3 را اجرا می کند.