🔹 تابع «run» یکی از کاربردیترین «Scope Functions» در «Kotlin» هست که همزمان دو کار مفید انجام میده: اجرای یک بلاک کد روی یک آبجکت و برگردوندن نتیجهی آخرین عبارت داخل بلاک.
🔸 «run» دو شکل داره: یکی به عنوان extension function روی هر نوعی و دیگری به صورت standalone که مستقیماً صدا زده میشه. تفاوتش با «let» و «apply» اینه که درون بلاک به آبجکت با کلمهی «this» دسترسی داری و در نهایت نتیجه رو برمیگردونه.
🔹 کِی به کار میاد؟ وقتی میخوایم یک آبجکت رو مقداردهی اولیه کنیم، چند عملیات روش انجام بدیم و در نهایت یک مقدار جدید برگردونیم. مثلاً پر کردن یک آبجکت «User» از دیتابیس و برگردوندن نام کامل کاربر.
🔸 مثال عملی: فرض کن یک کلاس «User» داری که فیلدهای «firstName» و «lastName» داره. میخوای ازش یک «String» به صورت اسم کامل بسازی و برگردونی.
کد مربوطه رو ببین:
🔹 داخل «run» با «this» به آبجکت «user» دسترسی داری و میتونی مستقیماً فیلدها رو مقداردهی کنی. در نهایت عبارت «"$firstName $lastName"» به عنوان نتیجه برگردونده میشه.
🔸 این تابع برای زمانی عالیه که هم نیاز به تغییر وضعیت آبجکت داری و هم میخوای یک خروجی مشخص ازش بگیری.
🎯 نکته مهم: «run» با «with» تفاوت داره: «with» غیرextension هست و آبجکت رو به عنوان آرگومان میگیره. ولی «run» معمولاً روی null safety بهتر کار میکنه.
✨ خلاصه: از «run» برای زنجیرهای از عملیات روی یک آبجکت و برگردوندن نتیجه استفاده کن.
#Codeit #Android #Kotlin #ScopeFunctions #RunFunction #Jetpack
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🔸 «run» دو شکل داره: یکی به عنوان extension function روی هر نوعی و دیگری به صورت standalone که مستقیماً صدا زده میشه. تفاوتش با «let» و «apply» اینه که درون بلاک به آبجکت با کلمهی «this» دسترسی داری و در نهایت نتیجه رو برمیگردونه.
🔹 کِی به کار میاد؟ وقتی میخوایم یک آبجکت رو مقداردهی اولیه کنیم، چند عملیات روش انجام بدیم و در نهایت یک مقدار جدید برگردونیم. مثلاً پر کردن یک آبجکت «User» از دیتابیس و برگردوندن نام کامل کاربر.
🔸 مثال عملی: فرض کن یک کلاس «User» داری که فیلدهای «firstName» و «lastName» داره. میخوای ازش یک «String» به صورت اسم کامل بسازی و برگردونی.
کد مربوطه رو ببین:
data class User(var firstName: String? = null, var lastName: String? = null)
fun getFullName(user: User): String {
return user.run {
firstName = "Ali"
lastName = "Rezaei"
"$firstName $lastName" // آخرین عبارت برگردونده میشه
}
}
fun main() {
val user = User()
val fullName = getFullName(user)
println(fullName) // خروجی: Ali Rezaei
}
🔹 داخل «run» با «this» به آبجکت «user» دسترسی داری و میتونی مستقیماً فیلدها رو مقداردهی کنی. در نهایت عبارت «"$firstName $lastName"» به عنوان نتیجه برگردونده میشه.
🔸 این تابع برای زمانی عالیه که هم نیاز به تغییر وضعیت آبجکت داری و هم میخوای یک خروجی مشخص ازش بگیری.
🎯 نکته مهم: «run» با «with» تفاوت داره: «with» غیرextension هست و آبجکت رو به عنوان آرگومان میگیره. ولی «run» معمولاً روی null safety بهتر کار میکنه.
✨ خلاصه: از «run» برای زنجیرهای از عملیات روی یک آبجکت و برگردوندن نتیجه استفاده کن.
#Codeit #Android #Kotlin #ScopeFunctions #RunFunction #Jetpack
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🔥1