✏️ تعديل: Zero‑Indexing System
تعديل محتوى الموضوع
→ رجوع للموضوع
عنوان الموضوع
التصنيف
التاقات (مفصولة بفاصلة)
ملاحظة التعديل (اختياري)
المحتوى
**Zero‑Indexing System** - Most programming languages (including Dart) start counting positions from `0`. - That means the first character of `"hello"` is at index `0`, the second at `1`, etc.; so `index + 1` gives you the human-friendly position. - Because of zero indexing, the last index is always `length - 1`. For `"hello"` (`length == 5`), valid indexes are `0` through `4`. - When you iterate over a string or list, use `for (var i = 0; i < myString.length; i++)` so you don’t go past the last element. ```dart void main() { String name = "Ali"; print(name[2]); // prints 'i' } ``` - `name[2]` مش property، ده أسلوب للوصول (access) لحرف داخل الـ `String` باستخدام **index operator** (مِش property). - `String` في Dart فيها properties زي `length`, `isEmpty`, `runtimeType`; أما `name[2]` فهو **index access** ياخد الحرف اللي على الموقع رقم 2. - تقدر تعتبره شغلة من نوع “operator” مش property، لأنك بتستخدم الأقواس `[]` مع رقم. لو حابب أشرح الفرق بالإنجليزي أو أديك ملخص بـ bullet عن properties vs indexing، قولي. Operation (عملية) **Operation (عملية)** - عملية هي أي تعبير يمثّل شي بتعمله على قيمة: جمع (`+`)، مقارنة (`==`)، الوصول عبر الفهرس (`name[2]`)، أو استدعاء وظيفة (`trim()`). - بالنسبة لـ `String` في Dart: - `name.length` → property (يعطي عدد الأحرف). - `name[2]` → عملية **index operator**: بتشتغل على السلسلة وتُرجع الحرف عند الموقع رقم `2`. - `name + "!"` → عملية جمع (concatenation) تنتج سلسلة جديدة. - `name.contains("Ali")` → عملية تحقق (method call) ترجع `bool`. - العمليات ممكن تكون من النوع `operator` (زي `[]`, `+`, `==`) أو `method` (زي `toUpperCase()`)، والفرق إن الـ operator بيشتغل مباشرة على القيمة بدون اسم وظيفة، بينما الـ method هي دالة. أمثلة بسيطة تبين الفرق إذا حابب؟
👁️ معاينة فورية
💡 كل بلوك قابل للسحب والترتيب. يدعم
Markdown
:
## عنوان
·
**bold**
·
- قائمة
·
```dart code```
·
[[اسم الموضوع]]
💾 حفظ التعديلات