با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که علاقمند به دوره آموزش کاتلین هستند. در جلسه قبل با Delegation و نحوه کار با آن آشنا شدیم. در این جلسه آموزش کار با توابع در کاتلین ارائه می گردد.
کاتلین یک زبان استاتیک تایپ شده است، از این رو توابع نقش مهمی در آن ایفا می کنند.
آموزش کار با توابع در کاتلین چندان دشوار نخواهد بود زیرا همه ما تا حدی با توابع و کارکردهای آن ها آشنا هستیم.
توابع با کمک کلید واژه “fun” مشخص می شوند.
مثل اغلب OPP ها، توابع نیز به بازگردانی type و یک لیست از گزینه های argument می پردازند.
در مثال زیر:
تابع موجود را نام MyFunction تعریف کرده ایم.
در مرحله بعد، آن را از تابع اصلی فراخوانی می کنیم.
در نهایت بعضی از argument های آن را منتقل می نماییم.
1 2 3 4 5 6 7 | fun main(args: Array<String>) { println(MyFunction("tutorialsPoint.com")) } fun MyFunction(x: String): String { var c:String = "Hey!! Welcome To ---" return (c+x) } |
قطعه کد بالا خروجی زیر را در مرورگر تولید می کند.
1 | Hey!! Welcome To ---tutorialsPoint.com |
تابع مورد نظر باید به صورت زیر بیان شود.
1 | fun <nameOfFunction>(<argument>:<argumentType>):<ReturnType> |
در ادامه به تعدادی از توابع موجود در کاتلین اشاره می کنیم.
Lambda یک تابع سطح بالا است که به طور قابل توجهی کد صفحه boiler plate را هنگام بیان نمودن یک تابع و تعریف آن، کاهش می دهد.
کاتلین همواره اجازه تعریف Lambda را به شما می دهد.
می توانید هر وقت که می خواهید در کاتلین Lambda را بیان کرده و سپس آن را به یک تابع انتقال دهید.
به مثال زیر توجه کنید.
1 2 3 4 5 | fun main(args: Array<String>) { val mylambda :(String)->Unit = {s:String->print(s)} val v:String = "TutorialsPoint.com" mylambda(v) } |
در کد بالا، ما lambda خود را با عنوان “mylambda” ایجاد کرده و یک متغیر را به این lambda منتقل کرده ایم.
این lambda یک String است و حاوی مقدار “TutorialsPoint.com” می باشد.
قطعه کد بالا خروجی زیر را در مرورگر تولید می کند.
1 | TutorialsPoint.com |
مثال فوق الگوی بیان lambda را نشان می دهد که می توان در برنامه کاتلین استفاده نماییم.
می توان یک lambda را به یک تابع دیگر منتقل نمود تا خروجی مورد نظر را به دست آورد و به این ترتیب، تابع calling function را به یک تابع inline function تبدیل نمود.
به مثال زیر توجه کنید.
1 2 3 4 5 6 7 8 9 | fun main(args: Array<String>) { val mylambda:(String)->Unit = {s:String->print(s)} val v:String = "TutorialsPoint.com" myFun(v,mylambda) //passing lambda as a parameter of another function } fun myFun(a :String, action: (String)->Unit) { //passing lambda print("Heyyy!!!") action(a)// call to lambda function } |
قطعه کد بالا خروجی زیر را در مرورگر تولید می کند.
با استفاده از تابع inline می توان lambda را به عنوان یک پارامتر منتقل کرد.
هر تابع دیگری نیز با استفاده از کلمه کلیدی “inline”، در تابع inline قابل ساختن است.
در این جلسه آموزشی به آموزش کار با توابع در کاتلین پرداختیم.
در جلسه بعد آموزش destructuring declaration ارائه خواهد گردید.
با پی وی لرن همراه ب