هل هناك perl تعادل المشغل الاهتمام فارغ (؟؟) في C #؟
-
19-09-2019 - |
سؤال
بدأت حقا أحب C # ?? المشغل أو العامل. وأنا معتاد تماما على الحقيقة، حيث يوجد شيء مفيد في بعض اللغات، من المحتمل أن يكون في بيرل أيضا.
ومع ذلك، لا أستطيع أن أجد؟ ما يعادل في بيرل. هل هنالك أي؟
المحلول
اعتبارا من 5.10 هناك //
المشغل، وهو ما يعادل منه الدلوي إذا كنت تفكر في مفهوم undef
في بيرل ليكون ما يعادل مفهوم null
في ج #.
مثال:
my $a = undef;
my $b = $a // 5; # $b = 5;
مثال ب:
my $a = 0;
my $b = $a // 5; # $b = 0;
نصائح أخرى
مثل يقول آدم, ، بيرل 5.10 لديه //
المشغل الذي يختبر مشغل Lefthand الخاص به لمعرفة-نيس بدلا من الحقيقة:
use 5.010;
my $value = $this // $that;
إذا كنت تستخدم إصدار سابق من بيرل، فهذا فوضوي بعض الشيء. ال ||
لن تعمل:
my $value = $this || $that;
في هذه الحالة، إذا $this
هل 0 أو السلسلة الفارغة، وكلاهما يتم تعريفه، ستحصل عليه $that
. وبعد للتنقل عن ذلك، تتمثل المصطلح في استخدام المشغل الشرطي حتى تتمكن من إجراء الشيك الخاص بك:
my $value = defined( $this ) ? $this : $that;
في الواقع، ستعمل الدائرة القصيرة أو المشغل أيضا عند تقييم برنامج الأمم المتحدة للرقم:
my $b = undef || 5; # $b = 5;
ومع ذلك، سوف تفشل عند تقييم 0 ولكن صحيح:
my $b = 0 || 5; # $b = 5;
ضمن السؤال أي عدد من الحجج، وبالتالي فإن الإجابة تنطوي على روتين فرعي:
هنا تحصل عليه - سيعود القيمة الأولى المعرفة / غير الفارغة للقائمة:
sub coalesce { (grep {length} @_)[0] }
ليس هذا ما أعلمه عن.
بيرل ليس حقا مستخدم كبير للمفهوم الفاتح. يحتوي على اختبار لما إذا كان متغير غير محدد. لا مشغل خاص مثل؟ رغم ذلك، ولكن يمكنك استخدام المشروط؟: المشغل مع اختبار رقم غير صحيح والحصول على قريبة جدا.
وأنا لا أرى أي شيء في بيرل قائمة المشغل أيضاً.