apply وalso
اضبطوا الكائنات وأضيفوا التأثيرات الجانبية
apply وalso درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
تهيئة الكائنات
إن apply وalso دالتا نطاق تُرجعان الكائن نفسه بدلًا من نتيجة اللامبدا. وهذا يجعلهما مثاليتين للتهيئة وتسلسل الاستدعاءات.
دالة apply
تشغّل apply كتلةً يكون فيها الكائن هو this، وتُرجع الكائن. وهي الأداة التقليدية لتهيئة كائن بعد إنشائه.
fun main() {
val builder = StringBuilder().apply {
append("Hello")
append(", ")
append("World")
}
println(builder.toString())
}لماذا تُرجع apply الكائن
بما أن apply تُرجع المستقبل، يمكنك إسناد الكائن الذي تمت تهيئته مباشرةً إلى متغير.
data class Person(var name: String = "", var age: Int = 0)
fun main() {
val p = Person().apply {
name = "Alice"
age = 30
}
println(p)
}تستخدم apply القيمة this
داخل apply يكون الكائن هو المستقبل، لذلك يمكنك الوصول إلى خصائصه مباشرةً من دون أي بادئة.
data class Config(var host: String = "", var port: Int = 0)
fun main() {
val config = Config().apply {
host = "localhost"
port = 8080
}
println("${config.host}:${config.port}")
}دالة also
تشغّل also كتلةً يكون فيها الكائن متاحًا باسم it، وتُرجع الكائن. وتُستخدم للآثار الجانبية، مثل التسجيل أو التحقق، التي لا تغيّر الكائن.
fun main() {
val numbers = mutableListOf(1, 2, 3)
numbers
.also { println("Before: $it") }
.add(4)
println("After: $numbers")
}تستخدم also القيمة it
بما أن also تكشف عن الكائن باسم it، فهي مريحة عندما تريد الاستمرار في الإشارة إلى this الخارجي أو عندما تريد إبقاء المرجع صريحًا.
fun main() {
val value = 42
.also { println("Logging value: $it") }
println(value)
}apply في مقابل also
يشبه الفرق بينهما الفرق بين run وlet:
- تستخدم
applyالقيمةthis، وتناسب تهيئة الخصائص أكثر. - تستخدم
alsoالقيمةit، وتناسب تنفيذ الآثار الجانبية على الكائن أكثر.
تُرجع كلتاهما الكائن الأصلي.
data class Box(var size: Int = 0)
fun main() {
val box = Box()
.apply { size = 5 }
.also { println("Created box with size ${it.size}") }
println(box)
}تسلسل apply وalso
بما أن كلتيهما تُرجعان الكائن، يمكنك تسلسلهما لتهيئة الكائن أولًا ثم تنفيذ الآثار الجانبية ضمن مسار متتابع وسلس.
data class Account(var owner: String = "", var balance: Int = 0)
fun main() {
val account = Account()
.apply { owner = "Sam" }
.apply { balance = 100 }
.also { println("New account: $it") }
println(account.balance)
}استخدام also للتحقق
استخدم also لإدراج عملية تحقق في منتصف سلسلة من دون قطع مسارها.
fun main() {
val result = listOf(1, 2, 3, 4)
.filter { it % 2 == 0 }
.also { check(it.isNotEmpty()) { "No even numbers" } }
println(result)
}إرجاع الكائن يتيح إنشاء مسارات متتابعة
السمة المشتركة بين apply وalso هي أنهما لا تقطعان السلسلة أبدًا، لأنهما تعيدان دائمًا الكائن نفسه الذي بدأت به.
fun main() {
val text = StringBuilder()
.apply { append("a") }
.also { it.append("b") }
.apply { append("c") }
println(text)
}اختيار apply أو also
استخدم apply عند تهيئة كائن أو تغييره باستخدام أعضائه الخاصة. واستخدم also عند تنفيذ إجراء يستخدم الكائن لكنه لا يهيئه، مثل التسجيل أو تصحيح الأخطاء أو التحقق.
تحقق سريع
ما القيمة التي تُرجعها apply وalso؟
مراجعة
تعلّمت دالتي النطاق اللتين تُرجعان الكائن:
- تستخدم
applyالقيمةthisلتهيئة كائن. - تستخدم
alsoالقيمةitلتنفيذ آثار جانبية على كائن.
تُرجع كلتاهما الكائن، مما يتيح إنشاء سلاسل واضحة. ستتعلم بعد ذلك تجميع العمليات باستخدام with.
الأسئلة الشائعة
هل درس «apply وalso» مجاني؟
نعم — نص درس «apply وalso» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «apply وalso»؟
اضبطوا الكائنات وأضيفوا التأثيرات الجانبية تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «apply وalso»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- let وrun
- apply وalso
- with
- اختيار الأنسب