برنامه نویسی و طراحی سایت

توابع در کاتلین – از صفر تا صد

توابع در کاتلین – از صفر تا صد

«تابع» (Function) یکی از اصلی‌ترین مفاهیم موجود در دنیای برنامه نویسی است. امروزه با توجه به پیچیده‌تر شدن منطق‌های مورد استفاده در برنامه نویسی و افزایش حجم کدها لزوم استفاده از توابع بیشتر از گذشته حس می‌شود. توابع با تقسیم برنامه به بخش‌های کوچک‌تر ضمن جلوگیری از تکرار به خوانایی کد نیز کمک می‌کنند. نحوه استفاده از توابع در کاتلین نیز همانند سایر زبان‌های برنامه نویسی است. استفاده از توابع در کاتلین فرایند کد نویسی را کوتاه‌تر و آسان‎‌‌تر می‌کند. در این مطلب از مجله تم آف، توابع در کاتلین و انواع آن به همراه مثال‌های متعدد از تعریف و فراخوانی مورد بررسی قرار گرفته است.

فهرست مطالب این نوشته
منظور از توابع در کاتلین چیست؟

نحوه تعریف توابع در کاتلین به چه صورت است؟

منظور از توابع بدون مقدار بازگشتی در کاتلین چیست؟

منظور از توابع با مقدار بازگشتی در کاتلین چیست؟

مزایا و معایب استفاده از توابع در کاتلین

مزایای توابع در کاتلین

معایب توابع در کاتلین

انواع توابع در کاتلین

توابع کتابخانه استاندارد کاتلین

مثالی از کاربرد توابع کتابخانه استاندارد کاتلین

توابع تعریف شده توسط کاربر

نحوه تعریف توابع در کاتلین

تفاوت پارامتر و آرگومان در توابع چیست؟

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

چند مثال از تعریف توابع در کاتلین

پیاده‌سازی تابع در کاتلین برای محاسبه حاصل‌ضرب دو عدد

پیاده‌سازی تابع student در کاتلین برای چاپ رشته در خروجی

نحوه فراخوانی توابع در کاتلین چگونه است؟

فراخوانی تابع حاصل‌ضرب دو عدد با ارسال دو آرگومان

فراخوانی تابع student به همراه تمام آرگومان‌های مورد نیاز

چند نکته کاربردی استفاده از توابع در کاتلین

پارامترها با مقادیر پیش فرض

آرگومان‌های نام‌گذاری شده

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

توابع تک خطی در کاتلین

آرگومان‌های نامحدود توابع در کاتلین

سوالات متداول در خصوص توابع در کاتلین

منظور از تابع اکستنشن در کاتلین چیست؟

آیا کاتلین نیاز به نصب دارد؟

کاربرد تابع لامبدا در کاتلین چیست؟

جمع‌بندی

faradars mobile

منظور از توابع در کاتلین چیست؟

توابع در کاتلین مجموعه‌‌ای از کدهای مرتبط به هم هستند که وظیفه خاصی را انجام می‌دهند. در برنامه نویسی از توابع برای شکستن کد به بخش‌های کوچک‌تر استفاده می‌شود که به مدیریت بهتر برنامه کمک می‌کند.

آموزش برنامه نویسی کاتلین – توسعه اندروید با Kotlin – مقدماتی
فیلم آموزش برنامه نویسی کاتلین – توسعه اندروید با Kotlin – مقدماتی در تم آف

کلیک کنید

تقسیم برنامه به بخش‌های کوچک‌تر ضمن ایجاد امکان مدیریت بهتر برنامه از تکرار کد‌ها نیز جلوگیری می‌کند. در نتیجه، خوانایی برنامه افزایش می‌یابد.

کارکرد توابع در کاتلین

به عنوان مثال، در برنامه‌ای قرار است که بر اساس دریافتی از کاربر یک دایره ایجاد و سپس رنگ شود. این عملکرد را می‌توان در قالب دو تابع پیاده‌سازی کرد.

  • تابع ( )createCircle

    : کدهای مربوط به ایجاد دایره در این بخش پیاده‌سازی می‌شوند.

  • تابع ( )colorCircle

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

نحوه تعریف توابع در کاتلین به چه صورت است؟

نحوه تعریف توابع در کاتلین بسیار مشابه با سایر زبان‌های برنامه نویسی است. برای تعریف تابع در کاتلین از کلمه کلیدی fun

 به همراه نام تابع و پارامترهای ورودی آن استفاده می‌شود. کد زیر پیاده‌سازی تابع sum()

 برای محاسبه مجموع دو عدد را نشان می‌دهد.

fun sum(a: Int, b: Int): Int {
    return a + b
}

در مثال بالا، می‌توان تابع sum(x,y)

 را به دفعات مختلف فراخوانی کرد و این تابع مجموع دو عدد ورودی را برگشت خواهد داد. بنابراین، توابع ضمن جلوگیری از تکرار، امکان استفاده مجدد از کد را نیز فراهم می‌کنند.

منظور از توابع بدون مقدار بازگشتی در کاتلین چیست؟

توابع بدون مقدار بازگشتی در کاتلین توابعی هستند که بعد از اتمام دستورات بدنه تابع مقداری را برگشت نمی‌دهند. در بدنه این توابع کلمه کلیدی Return

 دیده نمی‌شود و خروجی آن‌ها اصطلاحاً از نوع Void

 است. قطعه کد زیر تابع بدون مقدار بازگشتی در کاتلین را نشان می‌دهد.

fun test( ){
 print("Faradars Blog")
}

منظور از توابع با مقدار بازگشتی در کاتلین چیست؟

توابع با مقدار بازگشتی در کاتلین توابعی هستند که در صورت فراخوانی مقداری را برگشت می‌دهند. کلمه کلیدی Return

 در بدنه این توابع دیده می‌شود و با توجه به نوع داده‌ای بازگشتی باید متغیری برای ذخیره این مقدار در نظر گرفت.

علاوه بر این، در زمان تعریف این توابع نوع داده‌ای بازگشتی بعد از نام تابع و علامت :

 مشخص می‌شود. قطعه کد زیر تابع با مقدار بازگشتی در کاتلین را نشان می‌دهد.

fun test( ): String{
  return "Faradars Blog"
}

مزایا و معایب استفاده از توابع در کاتلین

در این بخش از نوشته مزایا و معایب استفاده از توابع در کاتلین مورد بررسی قرار گرفته‌ است. در ابتدا مزایای استفاده از توابع آورده شده است.

آموزش برنامه نویسی کاتلین – توسعه اندروید با Kotlin – مقدماتی
فیلم آموزش برنامه نویسی کاتلین – توسعه اندروید با Kotlin – مقدماتی در تم آف

کلیک کنید

مزایای توابع در کاتلین

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

  • ماژولار بودن: استفاده از توابع روشی برای ماژولار کردن کد و تقسیم آن به بخش‌های کوچک‌تر برای مدیریت بهتر محسوب می‌شود. «برنامه نویسی ماژولار» (Modular Programming) کد نوشته شده را خواناتر می‌کند و قابلیت نگهداری آن را افزایش می‌دهد. علاوه بر این، تست و آزمایش کد نیز در این شرایط آسان‌تر می‌شود.
  • قابلیت استفاده مجدد: یک تابع را می‌توان در چندین بخش از کد فراخوانی کرد. این مورد ضمن جلوگیری از تکرار کد امکان استفاده مجدد از آن را نیز فراهم می‌کند.
  • بهبود خوانایی: استفاده از توابع روشی برای کپسوله کردن منطق پیچیده در قالب بلوک‌های کد است که خوانایی و درک کد نوشته شده از این طریق افزایش می‌‌یابد.
  • انتزاع بهبود یافته: از توابع در کاتلین می‌توان برای درک منطق‌های پیچیده استفاده کرد. با استفاده از توابع درک عملکرد کد بدون نیاز به پیاده‌سازی جزئیات آن آسان‌تر می‌شود.

معایب توابع در کاتلین

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

  • افزایش سربار (Overhead): استفاده از توابع زیاد در برنامه ضمن افزایش اندازه کد، مقدار حافظه مورد نیاز برای اجرای کد را افزایش می‌دهد. درنتیجه، زمان مورد نیاز برای اجرای کد نیز متعاقباً افزایش می‌یابد.
  • دشواری در اشکال‌زدایی (Debugging): در صورت پیاده‌سازی منطق‌های پیچیده در قالب توابع تودرتو خطایابی و رفع اشکال از کد دشوار خواهد شد.

انواع توابع در کاتلین

توابع در کاتلین بر اساس تعریف توسط کاربر یا قرار داشتن در کتابخانه استاندارد کاتلین تقسیم‌بندی می‌شوند. بر این اساس دو نوع تابع در کاتلین وجود دارد.

  • توابع کتابخانه استاندارد کاتلین
  • توابع تعریف شده توسط کاربر

توابع کتابخانه استاندارد کاتلین

توابع زیادی در کتابخانه استاندارد کاتلین برای عملکردهای مختلف در دسترس قرار دارند. نحوه استفاده از این توابع در کاتلین بسیار آسان است و تنها با ارسال آرگومان‌های مشخص شده می‌توان از آن‌ها در برنامه استفاده کرد.

توابع در کاتلین

در ادامه چند مورد از پرکاربردترین توابع موجود در کتابخانه استاندارد کاتلین به همراه عملکردشان ارائه شده‌اند.

  • ()sqrt

     : برای محاسبه جذر اعداد از این تابع استفاده می‌شود.

  • ()print

     : این تابع برای چاپ پیام در خروجی کاربرد دارد.

  • ()rem

     : این تابع باقی‌مانده یک عدد در تقسیم بر عددی دیگر را نمایش می‌دهد.

  • ()toInt

     : برای تبدیل یک عدد به عدد صحیح از این تابع استفاده می‌شود.

  • ()readline

     : برای دریافت مقادیر از کاربر می‌توان از این تابع استفاده کرد.

  • ()compareTo

     : این تابع نتیجه حاصل از مقایسه دو عدد را نشان می‌دهد.

مثالی از کاربرد توابع کتابخانه استاندارد کاتلین

در نمونه کد زیر از ۳ تابع arrayOf()

 ، sum()

 ، println()

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


fun main(args: Array) {
    var sum = arrayOf(1,2,3,4,5,6,7,8,9,10).sum()
 
    println("The sum of all the elements of an array is: $sum")
}

تابع arrayOf()

 در مثال بالا چندین آرگومان از نوع «عدد صحیح» (Integers) یا «عدد اعشاری» (Double) را به عنوان ورودی دریافت می‌کند و آرایه جدیدی را تشکیل می‌دهد. همچنین، تابع sum()

 برای محاسبه مجموع عناصر درون آرایه و تابع println()

 برای چاپ متن مشخص شده در خروجی به‌ کار رفته‌اند. در ادامه، خروجی حاصل از اجرای قطعه کد بالا آورده شده است.

The sum of all the elements of an array is: 55

توابع تعریف شده توسط کاربر

در زبان برنامه نویسی کاتلین امکان پیاده‌سازی توابع توسط کاربر وجود دارد. این توابع در کاتلین با عنوان «توابع تعریف شده توسط کاربر» (User-Defined Function) شناخته می‌شوند.

توابع در کاتلین

همان طور که پیش‌تر نیز عنوان شد، برای تقسیم یک برنامه به بخش‌های کوچک‌تر باید از توابع استفاده کرد. هر تابع دارای ویژگی‌های خاصی همچون نام، نوع بازگشتی، تعداد پارامترهای مورد نیاز و سایر موارد است.

نحوه تعریف توابع در کاتلین

برای تعریف توابع در کاتلین برخلاف زبان‌های جاوا (Java) و اسکالا (Scala) نیازی به ساخت کلاس جدید برای نگه‌داری توابع نیست. در کاتلین توابع در قسمت بالایی برنامه تعریف می‌شوند. ساختار زیر نحوه تعریف توابع در کاتلین را نشان می‌دهد.

fun fun_name(a: data_type, b: data_type, ......): return_type  {
    // other codes
    return
}

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

  • fun: کلمه کلیدی برای تعریف تابع در کاتلین که در ابتدای تعریف قرار می‌گیرد.
  • fun_name: نام دلخواه برای تابع که بعداً برای فراخوانی تابع از آن استفاده می‌شود.
  • data_type: درون پرانتز می‌توان به تعداد مورد نیاز آرگومان‌ ورودی تعریف کرد. نوع این آرگومان‌ها با استفاده از data_type مشخص می‌شود که می‌تواند از نوع «رشته‌ای» (String)، «عدد صحیح» (Integer) و سایر موارد باشد.
  • return_type: نوع بازگشتی توسط تابع را مشخص می‌کند.
  • {….}: کدهای مربوط به تابع باید درون این بخش تعریف شوند.

تفاوت پارامتر و آرگومان در توابع چیست؟

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

آموزش برنامه نویسی کاتلین – توسعه اندروید با Kotlin – مقدماتی
فیلم آموزش برنامه نویسی کاتلین – توسعه اندروید با Kotlin – مقدماتی در تم آف

کلیک کنید

برای درک بهتر در مثال زیر به تعریف و فراخوانی تابع getFullName()

 توجه کنید.

fun getFullName(firstName: String, lastName: String): String {
      return "$firstName $lastName"
}

fun main() {
      val fullName = getFullName("Michael", "Smith")
      println(fullName)
}

پارامترها مقادیر ارسالی به تابع را مشخص می‌کنند و درون پرانتز در زمان معرفی تابع مشخص می‌شوند. در مثال بالا، firstName

 و lastName

 پارامترهای تابع getFullName()

 هستند. از سویی دیگر، آرگومان‌ها مقادیری هستند که در زمان فراخوانی به تابع ارسال می‌شوند. دو مقدار Michael

 و Smith

 آرگومان‌های ارسالی به تابع در مثال بالا هستند.

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

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

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

در خصوص ارسال آرگومان به تابع باید ۳ نکته مهم را رعایت کرد که در ادامه این نکات فهرست شده‌اند.

  • تعداد پارامترها باید با تعداد آرگومان‌ها برابر باشد.
  • ترتیب ارسال آٰرگومان‌ها به تابع مهم است.
  • نوع داده‌ای پارامترها و آرگومان‌های ارسالی باید یکسان باشد.
مطلب پیشنهادی:

آرگومان در برنامه نویسی چیست ؟ — به زبان ساده

شروع مطالعه

چند مثال از تعریف توابع در کاتلین

دامنه استفاده از توابع در برنامه نویسی بسیار گسترده است. از محاسبات ساده گرفته تا انجام عملیات‌های پیچیده همگی به کمک توابع قابل پیاده‌سازی هستند.

آموزش پایگاه داده اس کیو ال لایت SQLite در اندروید با کاتلین
فیلم آموزش پایگاه داده اس کیو ال لایت SQLite در اندروید با کاتلین در تم آف

کلیک کنید

در این بخش ابتدا دو تابع پیاده‌سازی خواهد شد و سپس، برای استفاده از آن‌ها در برنامه نحوه فراخوانی توابع در کاتلین توضیح داده می‌شود.

پیاده‌سازی تابع در کاتلین برای محاسبه حاصل‌ضرب دو عدد

در قطعه کد زیر تابعی به نام mul

 برای محاسبه حاصل‌ضرب دو عدد صحیح تعریف شده است.

fun mul(num1: Int, num2: Int): Int {
	var number = num1.times(num2)
	return number
}

خروجی حاصل از اجرای این تابع یک عدد صحیح است.

پیاده‌سازی تابع student در کاتلین برای چاپ رشته در خروجی

در قطعه کد زیر تابعی به نام student

 همراه با ۳ پارامتر ورودی مختلف از نوع‌های رشته‌ای، عدد صحیح و «کاراکتر» (Char) تعریف شده است.

fun student(name: String , roll_no: Int , grade: Char) {
	println("Name of the student is : $name")
	println("Roll no of the student is: $roll_no")
	println("Grade of the student is: $grade")
}

خروجی حاصل از اجرای تابع فوق چاپ اطلاعات مربوط به دانش آموز همچون نام، شناسه دانش آموزی و پایه تحصیلی است.

نحوه فراخوانی توابع در کاتلین چگونه است؟

هدف از ایجاد توابع در برنامه انجام کار یا وظیفه مشخصی است. برای استفاده از توابع باید آن‌ها را در برنامه فراخوانی کرد. اجرای کدها توسط کامپایلر (Compiler) از اولین خط شروع می‌شود و به محض رسیدن به تابع فراخوانی شده از بخش فعلی خارج شده و کدهای موجود در بدنه تابع را اجرا می‌کند.

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

در ادامه چرخه اجرای مربوط به فراخوانی توابع ارائه شده است.

  • رسیدن کامپایلر به خطی که فراخوانی تابع در آن قرار دارد.
  • هنگام فراخوانی تابع کنترل به آن خط منتقل می‌شود.
  • دستورات موجود در بدنه تابع به ترتیب اجرا می‌شوند.
  • کنترل زمانی به بخش قبلی منتقل می‌شود که به کروشه انتهایی تابع یا به «عبارت بازگشتی» (Return Statement) برسد.
  • مقادیر برگشتی توسط تابع در بخش‌های مشخص شده از کد اصلی مورد استفاده قرار می‌گیرند.

فراخوانی تابع حاصل‌ضرب دو عدد با ارسال دو آرگومان

در قطعه کد زیر تعریف و فراخوانی تابع mul

 برای محاسبه حاصل‌ضرب دو عدد با ارسال دو آرگومان ورودی یعنی اعداد ۳ و ۵ آورده شده است.

fun mul(a: Int, b: Int): Int {
	var number = a.times(b)
	return number
}
fun main(args: Array) {
	var result = mul(3,5)
	println("The multiplication of two numbers is: $result")
}

در بدنه تابع main()

 با رسیدن کنترل به فراخوانی تابع mul(3,5)

 کدهای موجود در این تابع اجرا خواهند شد. درون بدنه این تابع نیز از تابع داخلی times()

 استفاده شده است که حاصل‌ضرب دو عدد را محاسبه و در متغیر number

 ذخیره می‌کند. در ادامه به کمک دستور return

 مقدار محاسبه شده برگشت داده می‌شود و کنترل به تابع main()

 برمی‌گردد. بعد از ذخیره مقدار بازگشتی درون متغیر result

 دستور println()

 عبارت مشخص شده را در خروجی چاپ می‌کند.

The multiplication of two numbers is: 15

عبارت فوق خروجی حاصل از اجرای کد را نمایش می‌دهد.

فراخوانی تابع student به همراه تمام آرگومان‌های مورد نیاز

در قطعه کد زیر تعریف و فراخوانی تابع student

  برای چاپ اطلاعات در خروجی همراه با ارسال تمام آرگومان‌های مورد نیاز آورده شده است.

fun student( name: String , grade: Char , roll_no: Int) {
	println("Name of the student is : $name")
	println("Grade of the student is: $grade")
	println("Roll no of the student is: $roll_no")

}
fun main(args: Array) {
	val name = "Praveen"
	val rollno = 25
	val grade = 'A'
	student(name,grade,rollno)
	student("Gaurav",'B',30)
}

تابع main()

 از قطعه کد بالا، تابع student()

 را دو مرتبه فراخوانی کرده است. در فراخوانی توابع باید ترتیب آرگومان‌های ارسالی با ترتیب پارامترهای موجود در تعریف تابع یکسان باشد و در صورت عدم رعایت این شرط خطای «عدم مطابقت» (Mismatch) توسط کامپایلر در خروجی داده خواهد شد. آرگومان‌های ارسالی در اولین فراخوانی تابع student

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

Name of the student is : Praveen
Grade of the student is: A
Roll no of the student is: 25
Name of the student is : Gaurav
Grade of the student is: B
Roll no of the student is: 30

چند نکته کاربردی استفاده از توابع در کاتلین

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

آموزش کتابخانه ویو بایندینگ در کاتلین –  View Binding در Kotlin
فیلم آموزش کتابخانه ویو بایندینگ در کاتلین – View Binding در Kotlin در تم آف

کلیک کنید

پارامترها با مقادیر پیش فرض

پارامترهای توابع می‌توانند دارای مقادیر پیش‌فرض باشند. این مقادیر پیش‌فرض زمانی مورد استفاده قرار می‌گیرند که آرگومانی هنگام فراخوانی توابع ارسال نشود. مقادیر پیش‌فرض بعد علامت =

 در مقابل نوع داده‌ای مشخص می‌شوند. نمونه کد زیر پیاده‌سازی تابع همراه با پارامترهای پیش‌فرض را نشان می‌دهد.

fun read(
    b: ByteArray,
    off: Int = 0,
    len: Int = b.size,
) { /*...*/ }

در صورت ارسال آرگومان مقدار پیش‌فرض پارامتر نادیده گرفته می‌شود و آرگومان ارسالی مورد استفاده قرار می‌گیرد.

آرگومان‌های نام‌گذاری شده

در زمان فراخوانی توابع در کاتلین می‌توان نام آرگومان‌ها را بیان کرد. اهمیت استفاده از این شیوه زمانی بیشتر مشخص می‌شود که تابع دارای آرگومان‌های زیادی باشد. به عنوان مثال، تابع زیر را در نظر بگیرید.

fun reformat(
    str: String,
    normalizeCase: Boolean = true,
    upperCaseFirstLetter: Boolean = true,
    divideByCamelHumps: Boolean = false,
    wordSeparator: Char = ' ',
) { /*...*/ }

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

reformat(
    "String!",
    false,
    upperCaseFirstLetter = false,
    divideByCamelHumps = true,
    '_'
)

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

در کاتلین توابعی با مقدار بازگشتی Unit تعریف می‌شوند که عملاً مقدار خاصی را برگشت نمی‌دهند. قرار دادن این نوع بازگشتی کاملاً اختیاری است. قطعه کد زیر تابعی با مقدار بازگشتی Unit را نشان می‌دهد.

fun printHello(name: String?): Unit {
    if (name != null)
        println("Hello $name")
    else
        println("Hi there!")
    // `return Unit` or `return` is optional
}

قرار دادن عبارت Unit در تعریف توابع کاملاً اختیاری است. نمونه کد زیر با تابع تعریف شده در بالا تفاوتی ندارد.

fun printHello(name: String?) { ... }

توابع تک خطی در کاتلین

یکی از نکات مثبت در خصوص کاتلین ارائه ویژگی‌هایی برای خلاصه کردن کد است. در «توابع تک خطی» (Single-expression Functions) می‌توان کروشه‌ها را حذف کرد و تنها علامت =

 را بعد از نوع داده برگشتی تابع قرار داد. نمونه کد زیر یک تابع تک خطی در کاتلین را نشان می‌دهد.

fun double(x: Int): Int = x * 2

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

fun double(x: Int) = x * 2

آرگومان‌های نامحدود توابع در کاتلین

گاهی اوقات در دنیای برنامه نویسی تعداد آرگومان‌های ارسالی به صورت دقیق مشخص نیست و هر تعدادی برای آرگومان‌ها امکان‌پذیر است. به عنوان مثال، توابعی که یک لیست یا آرایه را به عنوان ورودی دریافت می‌کنند و تعداد عناصر موجود در لیست یا آرایه متغیر است. در این شرایط با قرار دادن کلمه کلیدی vararg

 قبل از پارامتر می‌توان دریافت مقادیر نامحدود را ممکن کرد.

برنامه نویسی در کاتلین

نمونه کد زیر پیاده‌سازی تابع با استفاده از آرگومان‌های نامحدود در کاتلین را نشان می‌دهد.

fun  asList(vararg ts: T): List {
    val result = ArrayList()
    for (t in ts) // ts is an Array
        result.add(t)
    return result
}

در این حالت می‌توان تعداد متغیری از آرگومان‌ها را برای این تابع ارسال کرد.

val list = asList(1, 2, 3)

سوالات متداول در خصوص توابع در کاتلین

بعد از بررسی مفاهیم مهمی همچون نحوه تعریف، فراخوانی و انواع توابع در کاتلین در این بخش از نوشته به متداول‌ترین سوالات در این حوزه پاسخ داده شده است.

منظور از تابع اکستنشن در کاتلین چیست؟

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

مطلب پیشنهادی:

تابع اکستنشن در کاتلین — به زبان ساده

شروع مطالعه

آیا کاتلین نیاز به نصب دارد؟

منظور از نصب کاتلین در واقع نصب کامپایلر مربوط به این زبان برنامه نویسی است. امکان نصب کامپایلر زبان کاتلین و اجرای برنامه‌های آن از طریق خط فرمان ویندوز وجود دارد. علاوه بر این بسیاری از محیط‌های توسعه همچون اندروید استودیو (Android Studio)، Eclipse و IntelliJ IDEA به صورت پیش‌فرض امکان توسعه برنامه‌های کاتلین را فراهم کرده‌اند.

مطلب پیشنهادی:

نصب کاتلین – آموزش از صفر تا صد

شروع مطالعه

کاربرد تابع لامبدا در کاتلین چیست؟

«توابع لامبدا» (Lambda Function) ابزاری بسیار قدرتمند در زبان کاتلین هستند که امکان مدل‌سازی توابع را به روشی آسان فراهم می‌کنند. این توابع شیوه مختصرتری را برای نوشتن ارائه می‌دهند. قطعه کد زیر نحوه پیاده‌سازی تابع لامبدا در کاتلین مربوط به محاسبه مجموع دو عدد را نمایش می‌دهد.

val sum = {a: Int , b: Int -> a + b}

جمع‌بندی

امروزه با توجه به بزرگ شدن اندازه برنامه‌ها و پیچیده بودن منطق‌های مورد استفاده در پیاده‌سازی، استفاده از توابع در برنامه نویسی اهمیت بسیار بیشتری نسبت به گذشته پیدا کرده است. منطق کلی و نحوه استفاده از توابع در کاتلین و سایر زبان‌های برنامه نویسی تقریباً یکسان است. توابع با هدف تقسیم کد به بخش‌های کوچک‌تر در برنامه تعریف ‌می‌شوند و ضمن جلوگیری از تکرار کد به خوانایی بیشتر کد نیز کمک می‌کنند.

مجموعه آموزش برنامه نویسی اندروید
فیلم مجموعه آموزش برنامه نویسی اندروید در تم آف

کلیک کنید

بر همین اساس در این نوشته از مجله تم آف ضمن بیان چرایی استفاده از توابع در کاتلین، نحوه تعریف و انواع توابع در این زبان برنامه نویسی مورد بررسی قرار گرفت. علاوه بر این، برای آشنایی بیشتر با نحوه تعریف و فراخوانی توابع در کاتلین چندین مثال به همراه توضیحات کامل ارائه شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.