هل هناك perl تعادل المشغل الاهتمام فارغ (؟؟) في C #؟

StackOverflow https://stackoverflow.com/questions/1891934

سؤال

بدأت حقا أحب 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] }

ليس هذا ما أعلمه عن.

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

وأنا لا أرى أي شيء في بيرل قائمة المشغل أيضاً.

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