Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الكلمة المفتاحية this

جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 5 من 110.

تشير الكلمة الأساسية this إلى المثيل الحالي للفئة (class). داخل الدالة (method)، تتيح لك this الوصول إلى المتغيرات الخاصة بالكائن.

إليك مثال على فئة (class) تحتوي على دوال (methods) تستخدم this:

class Car {
  String color = '';
  String model = '';

  void honk() {
    print('Beep beep!');
  }

  void describe() {
    print('I am a ${this.color} ${this.model}');
  }
}

داخل describe()، تشير this.color و this.model إلى متغيرات ذلك الكائن المحدد.

أنشئ كائن سيارة (car object) وقم بتعيين متغيراته:

Car myCar = Car();
myCar.color = 'Red';
myCar.model = 'Sedan';

استدعِ الدوال:

myCar.honk();
myCar.describe();

المخرجات:

Beep beep!
I am a Red Sedan

this مفيد بشكل خاص عندما يكون لمعلمة الطريقة (method parameter) نفس اسم متغير المثيل (instance variable):

class Car {
  String color = '';

  void setColor(String color) {
    this.color = color; // this.color = متغير المثيل، color = المعلمة
  }
}

بدون this، لن تعرف Dart ما إذا كان color يشير إلى المعلمة (parameter) أو متغير المثيل (instance variable). نقطة رئيسية: this يشير دائمًا إلى الكائن المحدد الذي يستدعي الطريقة حاليًا.

challenge icon

التحدي

سهل

أكمل فئة Car في car.dart عن طريق إضافة دالة تسمى displayInfo تستخدم الكلمة المفتاحية this لطباعة سنة السيارة، والشركة المصنعة، والطراز بالتنسيق التالي:

'This car is a [year] [make] [model]'

  • car.dart: يحتوي على فئة Car حيث ستضيف دالة displayInfo
  • driver.dart: يقوم بتعيين المتغيرات لكائن car ويستدعي displayInfo() (مغلق)

ورقة مرجعية

تشير الكلمة الأساسية this إلى المثيل الحالي للفئة (class) وتسمح لك بالوصول إلى متغيرات الكائن الخاصة داخل الأساليب (methods).

استخدام this في أسلوب (method):

class Car {
  String color = '';
  String model = '';

  void describe() {
    print('I am a ${this.color} ${this.model}');
  }
}

تكون this مفيدة بشكل خاص عندما يكون لمعلمة الأسلوب (method parameter) نفس اسم متغير المثيل (instance variable):

class Car {
  String color = '';

  void setColor(String color) {
    this.color = color; // this.color = متغير المثيل، color = المعلمة
  }
}

بدون this، لن تعرف لغة Dart ما إذا كان color يشير إلى المعلمة أو إلى متغير المثيل.

جرّب بنفسك

import 'car.dart';

void main() {
  Car myCar = Car();
  myCar.year = '2020';
  myCar.make = 'Toyota';
  myCar.model = 'Corolla';
  myCar.displayInfo();
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming