کاتلین فارسی

فهرست

1 - مقدمه

1.1 ) به دوره خوش آمدید

1.2 ) چرا کاتلین؟

2 - مبانی کاتلین

2.1 ) آشنایی با JVM

2.2 ) نصب کردن ابزارآلات

2.3 ) کاتلین REPL

2.4 ) ساختار یک برنامه کاتلین

2.5 ) کاتلین با IntelliJ IDEA

2.6 ) خلاصه بخش دوم

3 - کد نویسی مقدماتی کاتلین

3.1 ) تعریف متغیر در کاتلین

3.2 ) کار با Type های پایه ای

3.3 ) حلقه ها در کاتلین

3.4 ) عبارت های شرطی در کاتلین

3.5 ) اضافه کردن پگیج ها در کاتلین و خلاصه بخض سوم

4 - توابع

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

4.2 ) تابع با پارامترهای پیشفرض و نامیده شده

4.3 ) تابع با پرامترهای نامحدود و خلاصه بخش چهارم

5 - کلاس ها

5.1 ) کلاس ها در کاتلین

5.2 ) توابعِ عضو در کاتلین

5.3 ) visibility modifier ها در کاتلین

5.4 ) کلاس های دیتا در کاتلین

5.5 ) کلاس های enum در کاتلین

5.6 ) Object ها در کاتلین و خلاصه بخش پنج

6 - ارث بری

6.1 ) ارث بری در کاتلین

6.2 ) کارکردن با کلاس های abstract در کاتلین

6.3 ) کلاس های interface در کاتلین

6.4 ) نگاه کوتاه به generic ها و خلاصه بخش شش

7 - کارکردن با Null ها

7.1 ) null safety و خلاصه بخش هفت

8 - نکات اضافه

8.1 ) type casting در کاتلین

8.2 ) چندتایی ها (Tuples)

8.3 ) deconstructing values

8.4 ) کار کردن با exception ها

8.5 ) constant ها

8.6 ) annotation ها در کاتلین و خلاصه بخش هشت

9 - نگاه functionalای

9.1 ) توابع Higher-Order

9.2 ) عبارت های لاندا در کاتلین

9.3 ) closure ها در کاتلین

9.4 ) عبارت های الحاقی در کاتلین و خلاصه بخش نهم

10 - قابلیت همکاری و Interoperability

10.1 ) همکاری با جاوا

10.2 ) صحبت کردن با جاوا از کاتلین

10.3 ) کار کردن با null ها از جاوا

10.4 ) صحبت کردن با کاتلین از جاوا

10.5 ) توابع و خصیصه های درجه اول

10.6 ) توابع الحاقی کاتلین از جاوا

10.7 ) همکاری با جاوا 7 و 8 و خلاصه بخش دهم

11 - کتابخانه استاندارد

11.1 ) کتابخانه استاندارد کاتلین و کارکردن با کالکشن ها در کاتلین

11.2 ) مرور کوتاه بر روی filtering و mapping و flatmapping در کاتلین

تابع با پارامترهای پیشفرض و نامیده شده

ویرایش

حالا، یکی از ویژگی هایی که همراه کاتلین میاد اینه که توابعمون میتونن مقادیر پیشفرض داشته باشند. مثلا تابع sum رو نوشیتم که یادتون میاد.خب حالا فرض کنین من میخوام یک مقدار z هم در نظر بگیرم، که البته بعضی جاها نیاز به 2 پارامتر و بعضی جاها نیاز به 3 پارامتر داریم! یعنی بعضی جاها پارامتر سوممون به صورت دیفالت صفر باید درنظر گرفته بشه.

fun sum(x:Int, y:Int, z:Int=0) = x+y+z

fun main(args: Array<String>) {
    sum(1,2,3)
    sum(1,2)
}

نگاه کنین، کامپایلر میاد نگاه میکنه،اگه پارامتر سوم فراهم شده بود که همون مقدار رو استفاده میکنه، اگه پارامتر سوم فراهم نشده بود از مقدار دیفالت استفاده میکنه! و این خوبه، چراکه بهمون این قابلیت رو میده که یک تابع با چندین پارامتر دیفالت داشته باشیم و از تکرار بی مورد(overload) توابع جلوگیری کنیم. مثلا توی جاوا اگر میخواستیم یک تابع داشته باشیم که در بعضی مواقع دو ورودی میگرفت و در بعضی مواقع 3 ورودی، این کار امکان پذیر نبود و برای عملی شدن آن باید 2 تابع مینوشتیمف یکی با 2 ورودی و یکی با 3 ورودی که خب این مشکل در کاتلین رفع شده است.

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

fun printDetails(name: String,email: String="",phone: String){
    println("name :  $name - email : $email - phone : $phone")
}

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

printDetails("Sina Darvishi","555 87 345")

برای مقدار name نام خودم رو دادم و برای مقدار شماره هم شماره خودم رو وارد کردم. ولی وقتی اجراش کنیم متوجه میشیم که ارور میده، دلیلش هم اینه که مقدار شماره تلفن رو که من به عنوان دومین ورودی وارد کردم رو به عنوان email میگیره! در واقع میمونه که شما دارین پارامتر phone رو پاس میدین یا پارامتر email . برای رفع این مشکل هم راه حل خیلی ساده ای داریم، کاتلین این قابلیت رو توی کد نویسی به توسعه دهنده میده که وقتی میخواین به یک تابع مقدار بدین، دقیق مشخص کنین که به کدوم پارامتر میخواین مقدار بدین، پس کد درست بالا میشه:

printDetails("Sina Darvishi",phone = "555 87 345")

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