سؤال

لدي اختراق أحتاج إلى التوظيف في ظل هذه الشروط:

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

لذلك حاولت هذا الرمز:

my $use_hack = 
   $last_page_number == $current_page_number and
   $page_number != 1 and
   $total_items % $items_per_page != 0;

وأظل الحصول على هذا التحذير Useless use of numeric ne (!=) in void context حول الشرط الأخير وتقييم صحيح عندما $total_items % $items_per_page = 0.

say 'NOT EVEN' if $total_items % $items_per_page != 0;  #works properly, though...

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

هل كانت مفيدة؟

المحلول

حسنا، الأسبقية المشغل. and لديه تقريبا أدنى الأسبقية من أي مشغل في بيرل، لذلك كان بيرل تقييم التعبير في ترتيب غريب. التبديل إلى && بدلا من ذلك حصلت لي النتائج الصحيحة. blarg.

كلما كنت تعرف.

تعديل:
كما أشار فيليب بوتر أدناه، بيرل أفضل الممارسات (P.70) يوصي دائما باستخدام &&,||, ! لظروف المنطقية - الحد and or و not للتدفق السيطرة بسبب ذي الأسبقية المنخفضة. (وحتى يذهب حتى الآن ليقول لا تستخدم أبدا and و not, ، فقط or لفرط الغسيل.)
شكرا لكم جميعا!

نصائح أخرى

أرفق RHS في قوسين:

my $use_hack = (
   $last_page_number == $current_page_number and
   $page_number != 1 and
   $total_items % $items_per_page != 0);

مهمة (=) لها أسبقية أعلى عند مقارنتها and المشغل أو العامل. يمكنك إلقاء نظرة على أسبقية مشغل بيرل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top