في لغة Dart، تُستخدم عوامل التخصيص (Assignment Operators) لتعيين قيم للمتغيرات. إليك شرح مفصل مع أمثلة لكل عامل:
1. العامل الأساسي (=
)
يعين قيمة لليمين إلى متغير في اليسار.
مثال:
dart
Copy
int a = 5; // تعيين القيمة 5 للمتغير a
print(a); // الناتج: 5
2. عوامل التخصيص المركبة (Compound Assignment)
تجمع بين عملية حسابية وعملية التعيين في خطوة واحدة.
أ) +=
(إضافة ثم تعيين)
dart
Copy
a += 3; // تُكافئ: a = a + 3
print(a); // الناتج: 8
ب) -=
(طرح ثم تعيين)
dart
Copy
a -= 2; // تُكافئ: a = a - 2
print(a); // الناتج: 6
ج) *=
(ضرب ثم تعيين)
dart
Copy
a *= 4; // تُكافئ: a = a * 4 print(a); // الناتج: 24
د) /=
(قسمة مع تعيين → الناتج double
)
dart
Copy
double b = 24;
b /= 2; // تُكافئ: b = b / 2
print(b); // الناتج: 12.0
هـ) ~/=
(قسمة صحيحة ثم تعيين → للمتغيرات من نوع int
)
dart
Copy
int c = 5;
c ~/= 2; // تُكافئ: c = c ~/ 2 (القسمة الصحيحة)
print(c); // الناتج: 2
و) %=
(الباقي ثم تعيين)
dart
Copy
a %= 5; // تُكافئ: a = a % 5
print(a); // الناتج: 4 (لأن 24 ÷ 5 = 4 والباقي 4)
3. العامل ??=
(التعيين إذا كان المتغير فارغًا null
)
يعين القيمة فقط إذا كان المتغير يحتوي على null
.
مثال:
dart
Copy
int? d; // متغير nullable
d ??= 10; // d كان null، فسيُعيّن 10
print(d); // الناتج: 10
d ??= 20; // d ليس null، فلا يتم التعيين
print(d); // الناتج: 10
4. عوامل التخصيص للعمليات البتية (Bitwise)
تُستخدم مع الأعداد الصحيحة (int
).
أ) &=
(AND بتّي ثم تعيين)
dart
Copy
int e = 6; // 6 في الثنائي: 110 e &= 3; // 3 في الثنائي: 011 → الناتج: 010 (2) print(e); // الناتج: 2
ب) |=
(OR بتّي ثم تعيين)
dart
Copy
e |= 1; // 2 | 1 = 3 (011) print(e); // الناتج: 3
ج) ^=
(XOR بتّي ثم تعيين)
dart
Copy
e ^= 3; // 3 ^ 3 = 0 print(e); // الناتج: 0
د) <<=
(إزاحة لليسار ثم تعيين)
dart
Copy
e = 4; // 100 e <<= 1; // 100 ← إزاحة لليسار ← 1000 (8) print(e); // الناتج: 8
هـ) >>=
(إزاحة لليمين ثم تعيين)
dart
Copy
e >>= 2; // 8 ← إزاحة لليمين ← 10 (2) print(e); // الناتج: 2
ملاحظات مهمة:
- النوع (
Type
) مهم:- عند استخدام
/=
يجب أن يكون المتغير من نوعdouble
. - عند استخدام
~/=
يجب أن يكون المتغير من نوعint
.
- عند استخدام
- عامل
??=
يتطلب متغيرًا من نوعnullable
:dartCopyint? x; // يجب استخدام ? للإعلان عن nullable x ??= 5;
فوائد استخدام عوامل التخصيص:
- تقليل الأخطاء: تجنب تكرار اسم المتغير (مثل
a = a + 3
→a += 3
). - الكفاءة: كتابة أوضح وأقصر.
- سهولة الصيانة: تحسين قراءة الكود.