شروع 01 اولین قدم خیلی مهمه، خیلیا به خاطر ترس از شکست شروع نمیکنن
پس ترس رو بزار کنار و شروع کن
فقط شروع کن
تمرین و تکرار 02 خیلیا وارد حوزه برنامه نویسی میشن و به خاطر سختی هاش سریع جا میزنن و عقب میکشن
پس اگه میخوای موفق بشی فقط و فقط تمرین کن و پشتکار داشته باش
پشتکار
حرف اول و آخر رو میزنه
موفقیت 03 زمانی میتونی به این مرحله برسی که واقعا تلاش کرده باشی. برنامه نویسی واقعا راحت نیستش
اگه خوب تلاش کنی، مطمئن باش نتیجه زحماتت رو خیلی خوب دریافت میکنی
موفقیت رو باید به دست بیاری

وبلاگ

متدهای پرکاربرد scope functions در کاتلین

متدهای پرکاربرد scope functions در کاتلین
کاتلین

متدهای پرکاربرد scope functions در کاتلین

متدهای پرکاربرد کاتلین که به اصلاح اونارو با scope functions میشناسیمشون خیلی کاربردی و جذاب هستن.

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

این متدهای پرکاربرد شامل Let , Run , Also , Apply , With میشن که میخوام توی این مطلب درموردشون توضیح بدم.

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

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

1) Let :

وقتی روی یه آبجکت صدا بشه، داخل لمبدا میتونی به context اون شی بعنوان it دسترسی پیدا کنی.

استفاده‌های خیلی زیادی از این تابع میشه کرد، یکی از استفاده مهمش توی null checking هستش که روی یه آبجکت زنجیزه‌ای از متدها رو میخوایم صدا بزنیم.

if (fragmentManager != null) {
fragmentManager?.beginTransaction().add(##).addToBackStack(##).commit()
doSomething()
}

سناریو بالا رو اینسری با let مینویسیم

fragmentManager?.let{
    it.beginTransaction().add(##).addToBackStack(##).commit()
    doSomething()
    doSomethingElse()
}

در واقع it اشاره به آبجکت fm داره که توی بلاک let بهش دسترسی داریم و کد درون let.? تنها وقتی اجرا میشه که fm از ابتدا null نباشه.

let در حقیق خود لمبدا رو برمیگردونه. اینطوری بدون نوشتن if راحت میتونیم null check انجام بدیم 😎

2) Apply :

تفاوت apply با let این هست که بجای it از this استفاده میشه و خود آبجکت رو برمیگردونه.

نکتش اینه که بدون صدا زدن this میتونیم متدهای خود آبجکت رو داخل لمبدا صدا بزنیم و اونا رو بقولی apply کنیم روی آبجکت.

val recyclerView = findViewById(##)
recyclerView.layoutManager = ##
recyclerView.itemAnimator = ##
recyclerView.adapter = ###

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

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

مثل زیر:

val recyclerView = findViewById(##).apply{
       layoutManager = ##
       itemAnimator = ##
       adapter = ##
       }
3) Also :

این برای وقتی خوبه که روی یک آبجکت داریم کاری میکنیم یا تغییری میدیم و بعدش میخوایم بگیم همچنین (also) یک کار دیگه هم بکن.

val result = service.add(#)
doSomethingWithResult(result)

مثال بالا service.add یه کاری رو انجام میده و بعدش بهمون یک چیزی هم میده که با استفاده از also هم میشه نوشت:

service.add(کد موردنظر شما).also { 
    doSomethingWithResult(it)
}
4) Run :

این هم مثل let هست و همونطوری عمل میکنه با این تفاوت که this (خود کانتکست آبجکت) رو برمیگردونه

val date: Int = Calendar.getInstance().run {
    set(Calendar.YEAR, 2030)
    get(Calendar.DAY_OF_YEAR)
}
5) With :

این خیلی مثل apply هست با این تفاوت که معمولا یک نمونش برای وقتی هست که property های یک آبجکت رو میخوایم عوض کنیم.

var person = Person("Mohammad", "Nouri")
person.name1 = "No Name"
person.name2 = "No Name"

که با with به شکل زیر میشه

var person = Person("Mohammad", "Nouri")  
with(person)     {
         name1 = "No Name"
         name2 = "No Name"
}

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

دیدگاه خود را به ما بگویید

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

18 + هفت =

فیلدهای دلخواه برای نمایش را انتخاب کنید. سایر فیلدها مخفی می شود. برای ترتیب دلخواه فیلدها را به محل دلخواه بکشید و رها کنید.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
مقایسه
علاقمندی ها 0