متى يكون مشغل الفاصلة في بيرل مفيدا؟
-
18-09-2019 - |
سؤال
هل هناك أي سبب لاستخدام مشغل فاصلة العددية في أي مكان آخر غير الموجود for
حلقه؟
المحلول
منذ Perl Scalar Comma هو "منفذ" لمشغل Comma C، هذه التعليقات ربما apropos:
مرة واحدة في حين، تجد نفسك في موقف يتوقع فيه C تعبير واحد، ولكن لديك شيئين تريد أن تقوله. الأكثر شيوعا (وفي الواقع المثال الشائع الوحيد) هو في
for
حلقة، وتحديدا التعبيرات الأولى والثالثة السيطرة. ماذا لو (على سبيل المثال) تريد أن يكون لديك حلقةi
تحسب من0
ل10
في نفس الوقتj
هو العد لأسفل من10
ل0
?
لذلك، غريزة الخاص بك أنها مفيدة بشكل رئيسي في for
الحلقات هي فكرة جيدة، كما أعتقد.
نصائح أخرى
أنا أستخدمها في بعض الأحيان في المشروط (تسمى في بعض الأحيان عن طريق الخطأ "ternary")، إذا كان الرمز أسهل في القراءة من كسره في حالة حقيقية إذا كان / آخر:
my $blah = condition() ? do_this(), do_that() : do_the_other_thing();
يمكن استخدامه أيضا في بعض التعبير حيث تكون النتيجة الأخيرة مهمة، كما هو الحال في grep
التعبير، ولكن في هذه الحالة هو نفسه تماما كما لو تم استخدام فاصلة منقوطة:
my @results = grep { setup(), condition() } @list;