رسائل ورسائل في دارت ورفرفة

رسائل ورسائل في دارت ورفرفة.


كما هو الحال في العديد من اللغات الأخرى ، فإن getters \ setters هي طرق تتيح الوصول للقراءة / الكتابة إلى خصائص الكائن.


في هذه المقالة ، سننظر في أمثلة بسيطة ونعمل عليها في dartpad.



في Dart ، يتم تطبيق قراءة وكتابة أي خصائص للكائنات باستخدام getters \ setters.


على سبيل المثال ، انظر إلى الكود


class Person { String name; int birthYear; Person(this.name, this.birthYear); } void main() { Person person = Person('username', 1990); print('Hello ${person.name}, you was born in ${person.birthYear}'); person.name = 'Newusername'; print('Hello ${person.name}, you was born in ${person.birthYear}'); } 

قم بتشغيل الكود في Dartpad.


تحتوي كل خاصية في هذه الفئة على أداة الضبط الضمني للكتابة إليها والرابط الضمني للحصول على القيمة.


عندما نسمي person.name = 'Newusername'; ثم ننتقل إلى الصف واضعة. وبعد ذلك نحصل على قيمة person.name باستخدام getter.


في Dart ، يمكننا (وهذا موصى به من أجل تجريد الكود) إنشاء مجموعاتنا وأداة التثبيت الخاصة بنا. يتيح لنا ذلك تهيئة فصولنا بخصائص ، وفي المستقبل ، نلفها بطرق مختلفة دون تغيير رمز العميل.


على سبيل المثال ، دعنا نقول أن مشروعنا مع فئة الأشخاص قد تطور ونحتاج إلى تحديد سن الرشد. يمكننا القيام بذلك دون تغيير المنشئ والخصائص الأساسية للكائن.


 class Person { String name; int birthYear; bool get isAdult => (DateTime.now().year - birthYear) > 18; Person(this.name, this.birthYear); } void main() { Person personAdult = Person('adultUser', 1990); print('Hello ${personAdult.name}, you was born in ${personAdult.birthYear}, you are ${personAdult.isAdult ? 'adult' : 'not adult'}'); Person personNotAdult = Person('adultUser', 2005); print('Hello ${personNotAdult.name}, you was born in ${personNotAdult.birthYear}, you are ${personNotAdult.isAdult ? 'adult' : 'not adult'}'); } 

قم بتشغيل الكود في Dartpad.


عند تشغيل الكود في Dartpad ، نرى أننا أضفنا سلوكًا جديدًا في الفصل ، بينما لن يتأثر رمز العميل الذي تم إنشاؤه بالفعل وسيستمر كل شيء في العمل.


بنفس الطريقة ، إذا بدأنا العمل مع تقدم العمر في جزء من المشروع ، وليس مع تاريخ الميلاد ، فيمكننا حينئذٍ إضافة مضيف لتسجيل عيد الميلاد عند الإشارة إلى العمر.


 class Person { String name; int birthYear; bool get isAdult => (DateTime.now().year - birthYear) > 18; int get age => (DateTime.now().year - birthYear); set age(int val) => birthYear = (DateTime.now().year - val); Person(this.name, this.birthYear); } void main() { Person personAdult = Person('adultUser', 1990); print('Hello ${personAdult.name}, you was born in ${personAdult.birthYear}, you are ${personAdult.isAdult ? 'adult' : 'not adult'}'); Person personNotAdult = Person('adultUser', 2005); print('Hello ${personNotAdult.name}, you was born in ${personNotAdult.birthYear}, you are ${personNotAdult.isAdult ? 'adult' : 'not adult'}'); //check how setter work print(personAdult.birthYear); personAdult.age = 5; print(personAdult.birthYear); } 

قم بتشغيل الكود في Dartpad.


بشكل عام ، يتم استخدام getter & setter في كثير من الأحيان بحيث يتم إنشاء الإنشاء التلقائي في Android Studio. عند الضغط على المؤشر الموجود بالخاصية ، Command + N (في Windows ، Ctrl + N) وسيكون إنشائها في قائمة السياق.


الترميز الجيد للجميع!

Source: https://habr.com/ru/post/ar464095/


All Articles