0Pricing
Java Academy · درس

var في حلقات for

استنتجوا أنواع متغيرات الحلقة

var في حلقات for درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

‏var في الحلقات

يعمل var بصورة طبيعية كمتغير حلقة في كل من حلقات for التقليدية وحلقات for-each المحسّنة. ويستنتج المصرّف النوع من سياق الحلقة.

عداد حلقة for التقليدية

في حلقة for التقليدية، يستنتج var نوع العداد من تعبير التهيئة. في هذا المثال، يستنتج var i = 0 النوع int.

public class Main {
    public static void main(String[] args) {
        for (var i = 0; i < 5; i++) {
            System.out.println("i = " + i);
        }
    }
}

for-each على قائمة

في حلقة for المحسّنة، يستنتج var نوع العنصر من المجموعة. في هذا المثال، يكون كل name من النوع String.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var names = List.of("Ann", "Ben", "Cara");
        for (var name : names) {
            System.out.println(name);
        }
    }
}

for-each على مصفوفة

ينطبق الأمر نفسه على المصفوفات. يُستنتج نوع العنصر من نوع المصفوفة.

public class Main {
    public static void main(String[] args) {
        var scores = new int[]{90, 85, 78};
        var total = 0;
        for (var s : scores) {
            total += s;
        }
        System.out.println("Total: " + total);
    }
}

التكرار على إدخالات Map

عند التكرار على إدخالات الخريطة، توفر لك var عناء كتابة النوع المطوّل Map.Entry.

import java.util.Map;

public class Main {
    public static void main(String[] args) {
        var ages = Map.of("Ann", 30, "Ben", 25);
        for (var entry : ages.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}

أساليب العناصر المستنتجة

بما أن نوع العنصر معروف، يمكنكم استدعاء أساليبه داخل الحلقة مع تحقق كامل وقت الترجمة.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var words = List.of("red", "green");
        for (var w : words) {
            System.out.println(w.toUpperCase() + " (" + w.length() + ")");
        }
    }
}

حلقات متداخلة

يمكنكم استخدام var في الحلقات المتداخلة أيضًا، مما يحافظ على قِصر تعريف كل عداد.

public class Main {
    public static void main(String[] args) {
        for (var i = 1; i <= 3; i++) {
            for (var j = 1; j <= 3; j++) {
                System.out.print(i * j + " ");
            }
            System.out.println();
        }
    }
}

العد التنازلي

يتبع النوع المستنتج قيمة التهيئة، لذلك تعمل الحلقة التنازلية بالطريقة نفسها.

public class Main {
    public static void main(String[] args) {
        for (var n = 5; n >= 1; n--) {
            System.out.println(n);
        }
        System.out.println("Liftoff");
    }
}

استخدام var مع عدادات من النوع long

إذا احتجتم إلى عداد من النوع long، فاستخدموا قيمة حرفية من النوع long في التهيئة لكي يستنتج var النوع الأوسع.

public class Main {
    public static void main(String[] args) {
        var sum = 0L;
        for (var i = 1L; i <= 1000000L; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

سهولة القراءة في الحلقات

تُعد الحلقات من أوضح المواضع لاستخدام var، لأن النوع يكون واضحًا من المجموعة أو قيمة التهيئة. ويبقى الكود موجزًا وآمنًا.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var temps = List.of(20, 22, 19, 25);
        var max = Integer.MIN_VALUE;
        for (var t : temps) {
            if (t > max) max = t;
        }
        System.out.println("Max: " + max);
    }
}

الفهرس والقيمة معًا

يمكنكم الجمع بين حلقة تقليدية مفهرسة وvar لقراءة الموضع والقيمة معًا من قائمة.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var items = List.of("a", "b", "c");
        for (var i = 0; i < items.size(); i++) {
            System.out.println(i + ": " + items.get(i));
        }
    }
}

تحقق سريع

في for (var name : names)، حيث إن names من النوع List<String>، ما نوع name؟

خلاصة

لقد تعلمتم استخدام var في الحلقات:

  • الحلقات التقليدية: تستنتج نوع العداد من قيمة التهيئة
  • for-each: تستنتج نوع العنصر من المجموعة أو المصفوفة
  • تغنيكم عن الأنواع المطوّلة مثل Map.Entry
  • استخدموا القيم الحرفية من النوع long، مثل 0L، لعدادات long
  • الحلقات موضع مثالي لاستخدام var

الأسئلة الشائعة

هل درس «var في حلقات for» مجاني؟

نعم — نص درس «var في حلقات for» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «var في حلقات for»؟

استنتجوا أنواع متغيرات الحلقة تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «var في حلقات for»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. استخدام var للمتغيرات المحلية
  2. متى تحسّن var قابلية القراءة
  3. var في حلقات for
  4. قيود var
← العودة إلى Java Academy