OOZOU
تواصلوا معنا
العودة إلى المدونة

تبسيط الكود على Android باستخدام let وapply

let وapply دالتان مفيدتان جدًا في Kotlin، وقد تغيّران طريقة كتابتكم للكود مقارنة بما اعتدتم عليه في Java

21 يوليو 2017
3 دقائق للقراءة
تبسيط الكود على Android باستخدام let وapply

let و apply دالتان مفيدتان جدًا في Kotlin، وقد تغيّران طريقة كتابتكم للكود مقارنة بما اعتدتم عليه في Java. أود في هذا المقال أن أشارككم كيف تجعلون كودكم أبسط باستخدام let و apply. وأفترض أن لديكم معرفة أساسية بلغة Kotlin.

ماذا تستطيع let أن تفعل؟

أود أن أسلط الضوء على استخدامين رئيسيين للدالة let

  1. تحديد النطاق (Scoping Function): يمكن استخدام let لجعل الكود مستقلًا داخل كتلة let وإبقاء المنطق منفصلًا. ويمكن الإشارة إلى المتغير الذي يسبق let باسم it. انظروا إلى الكود التالي كمثال.
File("dummy.txt").let {
  print(it.toString())
}
//File "dummy.txt" is not visible here

كما ترون، الكائن File("dummy.txt") مرئي داخل كتلة let فقط. 2. التحقق من القيم الفارغة (null): في Java، ولكي نتجنب صديقنا العزيز NullPointerException، علينا أن نتحقق من null مرارًا وتكرارًا في الكود. لحسن الحظ يمكننا تبسيط ذلك باستخدام let. إذ يمكننا جعل كتلة let تُنفَّذ فقط عندما لا يكون المتغير null. لنرَ مثالًا.

لنفترض أن لدينا كائنًا بهذا الشكل user -(hold)-> info -(hold)-> email وقد يكون كل من user و info بقيمة null. هكذا سنكتب الكود في Java.

if(user != null) {
  Info info = user.getInfo();
  if (info != null) {
    String email = info.getEmail();
    if(email != null) {
        sendEmailToUser(email)
    }
  }
}

وفي Kotlin :)

user?.info?.email?.let? {
    sendEmailToUser(it)
}

كما ترون، الكود في Kotlin أقصر وأنظف بكثير.

كيف نستخدم apply؟

قد تساعدكم apply على كتابة الكود بأسلوب مختلف قليلًا

يمكن استخدام apply كدالة امتداد (extension) لجميع أنواع المتغيرات. وهي تُرجع الكائن نفسه بعد تطبيق ما بداخل كتلة apply عليه (فهي تعمل كما يوحي اسمها). لنرَ ذلك عمليًا لتتضح الصورة.

إليكم بعض الأمثلة:

  1. في Java، عندما نهيّئ RecyclerView قد نكتب شيئًا كهذا.
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new YourRecyclerViewAdapter(this));
recyclerView.setHasFixedSize(true)

أما مع apply في Kotlin فيمكننا كتابته بهذه الطريقة.

recyclerView.apply {
  layoutManager = LinearLayoutManager(this@YourActivity)
  setHasFixedSize(true)
  adapter = YourRecyclerViewAdapter(this@YourActivity)
}
  1. إنشاء كائن عبر دوال setter في Java قد يتطلب شيئًا مثل
User user = new User();
user.setFirstName = "John";
user.setLastName = "Doe";
user.setGender = "Male";
user.setProfileUrl = "...";
user.setPhoneNumber = "...";

ومع apply يمكننا تحسين الأمر قليلًا

User user = User().apply {
  firstName = "John"
  lastName = "Doe"
  gender = "male"
  profileUrl = "..."
  phoneNumber = "..."
}

داخل كتلة apply يمكننا الوصول إلى خصائص (properties) المتغير الذي استدعى apply أو دواله (methods) مباشرة، دون الحاجة إلى ذكر اسم المتغير مرة أخرى.

الخلاصة

في رأيي، تجعل let الكود أقصر وأنظف، خصوصًا بفضل قدرتها على التحقق من null. فنحن مطوّرو Android اضطررنا جميعًا إلى كتابة أسطر كثيرة في Java للتحقق من قيم null وتجنب NullPointerException، و let تريحنا من هذا العناء. أما apply فأرى أنها تجنّبنا تكرار ذكر المتغير نفسه، وتجعل الكود أسهل قراءة بعض الشيء.

المرجع

http://beust.com/weblog/2015/10/30/exploring-the-kotlin-standard-library/

Related Articles

كيف أصمّم برمجيات؟ دليل المبتدئين لأصحاب الأعمال

كيف أصمّم برمجيات؟ دليل المبتدئين لأصحاب الأعمال

تصميم البرمجيات عملية ممتعة لكنها معقدة، تتطلب الإبداع والتفكير المنطقي ومهارات حل المشكلات.

اقرأوا المزيد
مستقبل الحوسبة الطرفية: ما تحتاج الشركات إلى معرفته

مستقبل الحوسبة الطرفية: ما تحتاج الشركات إلى معرفته

يتطور المشهد الرقمي بسرعة، وعلى الشركات أن تتكيّف لتواكب الطلب المتزايد على السرعة والكفاءة والمعالجة في الوقت الفعلي.

اقرأوا المزيد
مستقبل قطاع التجزئة: الذكاء الاصطناعي والواقع المعزّز واتجاهات التحوّل الرقمي

مستقبل قطاع التجزئة: الذكاء الاصطناعي والواقع المعزّز واتجاهات التحوّل الرقمي

يتطور قطاع التجزئة بوتيرة غير مسبوقة بفضل الذكاء الاصطناعي (AI) والواقع المعزّز (AR) وتقنيات التحوّل الرقمي. فلم تعد المتاجر التقليدية مجرد أماكن لبيع المنتجات، بل أصبحت متاجر ذكية وتفاعلية.

اقرأوا المزيد

Have a Project in Mind?

Let's discuss how we can help bring your ideas to life with our expertise in web and mobile development.

ابدأوا المحادثةhello@oozou.com
OOZOU Logo

بانكوك · سنغافورة · هونغ كونغ

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

الخدمات

  • تطوير الويب
  • وكلاء الذكاء الاصطناعي والذكاء الاصطناعي التوليدي
  • تطوير تطبيقات الجوال
  • تحليلات البيانات وهندستها
  • تصميم تجربة المستخدم وواجهته (UX/UI) وتصميم المنتجات
  • التحوّل الرقمي

الشركة

  • من نحن
  • الوظائف
  • المدونة
  • دراسات الحالة
  • عروض حية
  • تعلّمت اليوم
  • تواصل معنا

المزيد

  • القطاعات
  • شبكة الشركاء
© 2026 OOZOU. جميع الحقوق محفوظة.
سياسة الخصوصيةمدونة قواعد السلوكسياسة مكافحة الرشوة والفساد