"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ضع \"الحقيقة الفارغة\" في الاعتبار أثناء البرمجة باستخدام java.util.stream API

ضع \"الحقيقة الفارغة\" في الاعتبار أثناء البرمجة باستخدام java.util.stream API

تم النشر بتاريخ 2024-11-08
تصفح:111

Keep \

  • مقدمة
  • ما هي الحقيقة الفارغة؟
    • بيان المشكلة
    • أدخل الحقيقة الفارغة
      • التعريف الرياضي للحقيقة الفارغة
    • ما أهمية هذا الأمر في البرمجة؟
    • مراجع

مقدمة

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

ما هي الحقيقة الفارغة؟

قبل أن نتعمق في التعريف الرياضي، دعونا نبدأ بمثال عملي في الكود لفهم ماهية الحقيقة الفارغة.

بيان المشكلة

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

  public static void main(String[] args) {
    // Example - 1, expected to do something
    if (allNumbersAreOdd(Arrays.asList(1, 3, 5))) {
      System.out.println("do something 1");
    }
    // Example - 2, NOT expected to do anything because NOT all numbers are odd
    if (allNumbersAreOdd(Arrays.asList(1, 2, 3, 4, 5))) {
      System.out.println("do something 2");
    }
    // Example - 3, NOT expected to do anything because list is empty so there is no odd number.
    /* This is the surprising element which is known as "Vacuous truth" and it will print "do something".
     * It is applicable to both allMatch(Predicate super T> predicate) 
     * and noneMatch(Predicate super T> predicate) */
    if (allNumbersAreOdd(Collections.emptyList())) {
      System.out.println("do something 3");
    }
  }

  private static boolean allNumbersAreOdd(@Nonnull List numbers) {
    return numbers.stream().allMatch(integer -> integer % 2 != 0);
  }

المثال الثالث مثير للاهتمام بشكل خاص. لماذا تُرجع "جميع الأرقام فردية" عندما تكون القائمة فارغة؟

أدخل الحقيقة الفارغة

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

التعريف الرياضي للحقيقة الفارغة

بحسب ويكيبيديا:

"الحقيقة الفارغة هي عبارة تؤكد أن جميع أعضاء المجموعة الفارغة لديهم خاصية معينة. تعتبر مثل هذه العبارات صحيحة لأنه لا توجد أمثلة مضادة في المجموعة الفارغة."

بعبارة أخرى، عندما نقول، "جميع عناصر المجموعة S لها الخاصية P،" وإذا كانت S فارغة، فإن هذا البيان صحيح بشكل فارغ لأنه لا يوجد عنصر واحد في S يمكن أن ينتهك الخاصية P

لماذا يهم هذا في البرمجة؟

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

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

  private static boolean allNumbersAreOdd(@Nonnull List numbers) {
    return !numbers.isEmpty() && numbers.stream().allMatch(integer -> integer % 2 != 0);
  }

مراجع

  • ويكيبيديا: الحقيقة الفارغة
  • ملاحظة API في وثائق Java:
    • boolean allMatch(المسند المسند)
    • boolean noneMatch(المسند المسند)
بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/prabhatkjena/keep-vacous-truth-on-top-of-mind-while-coding-with-javautilstream-api-4lnb?1 إذا كان هناك أي انتهاك، من فضلك اتصل بـ [email protected]
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3