توابع در کاتلین – بخش دوم
توابع در کاتلین – بخش دوم
سلام و درود خدمت همراهان کافی کدر،امیدوارم که حالتون خوب باشه و ایام به کامتون باشه.
در بخش قبلی توابع ،
ما در مورد نحوهی نوشتن توابع و syntax آنها صحبت کردیم، و در مورد توابع داخلی،توابع کاربر،پارامترهای توابع و نحوهی نام گذاری توابع صحبت کردیم.
همچنین در مورد نحوهی نام گذاری توابع صحبت کردیم و نکاتی رو مطرح کردیم.
و اما در توابع در کاتلین – بخش دوم، و بخش پایانی توابع ما در مورد مقدار بازگشتی Unit صحبت خواهیم کرد. توابع بازگشتی در کاتلین را بررسی خواهیم کرد ،همچنین در مورد لامبدا فانکشن ها صحبت خواهیم کرد.
مقدار بازگشتی Unit چیست ؟
خب بزارید اینطور مقدار بازگشتی Unit را تعریف کنیم:
اگر تابعی مقدار مفیدی را برنگرداند اصطلاحا میگوییم مقدار آن Unit هستش.
به شکل زیر نوشته میشود:
fun sumTwo(a:Int, b:Int):Unit{ val x = a + b println( x ) }
همچنین کد بالا با قطعه کد زیر مشابه هستند و میتوان کلمه Unit را در مقابل تابع ننوشت و هر دو کار یکسانی را انجام میدهند.
fun sumTwo(a:Int, b:Int){ val x = a + b println( x ) }
دو قطعه کد بالا هیچ تفاوتی با همدیگر ندارند و صرفا در قطعه کد اول ما خروجی تابع را هم مشخص کردیم.
توابع بازگشتی در کاتلین:
اگر بخواهیم تعریفی از توابع بازگشتی داشته باشیم باید بگوییم که توابع بازگشتی توابعی هستند که خودشان را فراخوانی میکنند،که در اکثر زبانهای سطح بالای دیگه هم مثل جاوا،سی و ….. هم وجود دارند.
مثلا عملیات فاکتوریل در ریاضی یا سری فیبوناچی را که میخواهیم پیاده سازی کنیم باید از توابع بازگشتی استفاده کنیم.
در مثال زیر ما عملیات فاکتوریل را در قالب توابع بازگشتی که خود را فراخوانی میکنند آورده ایم،مشاهده میکنید که تابع factorial را در خوده تابع فراخوانی کرده ایم و در مقدار a ضرب کرده ایم سپس مقداری را تحت عنوان result برگشت داده است.
و در انتها تابع factorial را در تابع main فراخوانی کرده ایم که مقدار 24 را برای ما نمایش میگذارد.
توجه!!! -> اگر در مورد فاکتوریل و مباحث ریاضی آن دانشی ندارید توصیه میکنم ابتدا از این لینک در مورد فاکتوریل مطالعه کنید.
مباحث ریاضی فاکتوریل و تحلیل آن.
مثال:
fun main(args: Array<String>) { val a = 4 val result = factorial(a) println( result ) } fun factorial(a:Int):Int{ val result:Int if( a <= 1){ result = a }else{ result = a*factorial(a-1) } return result }
توابع لامبدا در کاتلین چیه؟
خب میرسیم به توابع لامبدا که نقطه قوت زبان برنامه نویسی کاتلین میباشند. با وجود این توابع لامبدا در کاتلین ما میتوانیم کدهای طولانی رو به کد های کمتر وخلاصه تر تبدیل کنیم و کارای خفن دیگه ای که در ادامهی مسیره یادگیری کاتلین به آن ها میپردازیم.
و اما توابع لامبدا چی هستن؟
توابعی هستند که نامی ندارند و و فقط با {} تعریف میشوند و میتوانند هیچ پارامتری نداشته باشند و یا میتواینم تعداد زیادی پارامتر به آنها اختصاص بدهیم و همچنین بدنهی تابع را برای آن تعریف کنیم.
اگر بدنهی تابع وجود داشته باشد بعد از متغییر یا پارامتر تابع با <- تعریف میشود. که در مثال با نحوهی تعریف آن آشنا خواهیم شد.
سینتکش توابع لامبدا به شکل زیر میباشد:
{variable with type -> body of the function}
مثالی از توابع لامبدا:
fun main(args: Array<String>) { val upperCase = { str: String -> str.toUpperCase() } println( upperCase("hello, world!") ) }
در قطعه کد بالا ما در متغیر upperCase مقدار تابع لامبدا قرار داده ایم که یک متغیر str دارد و نامی ندارد و سپس بعد از علامت <- بدنهی تابع را تعریف کرده ایم که تمام حروف را بزرگ نمایش دهد. با دستور str.toUpperCase و نتیجه برابر HELLO, WORLD میشود.
پس توابع لامبدا نامی ندارند و میتوانند متغیری داشته باشند و بدنهی آن بعد از علامت <- تعریف خواهند شد.
در اینجا تا اونجایی که تونستیم سعی کردیم مباحث مربوط به توابع رو پوشش بدهیم و همهی توابع رو مورد بررسی قرار بدهیم،امیدوارم که واستون مفید بوده باشه.
امیدوارم از بخش توابع در کاتلین – بخش دوم استفاده لازم رو برده باشید.
منبع:
سایت kotlinlang.org
شما میتونید آموزش های بیشتری رو در کافی کدر دنبال کنید.
Lorem Ipsum has been the industry’s standard dummy text https://allafricanpokerguide.co.za/iglxgg of type and scrambled it to make a type specimen book.
Теперь нет необходимости везти крупную бытовую технику в сервисный центр. Наш мастер проводит диагностику у вас дома, находит сломанную деталь и заменяет ее [url=https://www.addtoany.com/share_save?linkname=&linkurl=bosch-remont.ru]https://www.addtoany.com/share_save?linkname=&linkurl=bosch-remont.ru[/url]
Lorem Ipsum has been the industry’s standard dummy text https://npf-paker.es/kgikbc of type and scrambled it to make a type specimen book.
Lorem Ipsum has been the industry’s standard dummy text https://brightice.de/nnclsxm of type and scrambled it to make a type specimen book.
Lorem Ipsum has been the industry’s standard dummy text https://alergosurcordoba2023.es/gvamvd of type and scrambled it to make a type specimen book.