ماذا فعلت !! (نقطة تعجب مزدوجة) يعني؟
سؤال
في الكود أدناه ، من أ منشور المدونة بواسطة الاسم المستعار, ، لاحظت استخدام نقطة التعجب المزدوجة !!
. كنت أتساءل ماذا يعني ذلك وأين يمكنني الذهاب في المستقبل لإيجاد تفسيرات لبناء بيرل مثل هذا. (نعم ، لقد بحثت بالفعل عن !!
في بيرلسين).
package Foo;
use vars qw{$DEBUG};
BEGIN {
$DEBUG = 0 unless defined $DEBUG;
}
use constant DEBUG => !! $DEBUG;
sub foo {
debug('In sub foo') if DEBUG;
...
}
تحديث
شكرا لجميع من إجاباتك.
هذا شيء آخر وجدته للتو مرتبط مشغل الاسكواش القائمة x!!
المحلول
إنه اثنان فقط !
المنطقية لا يشغلون بجوار بعضهم البعض.
سبب استخدام هذا المصطلح هو التأكد من تلقي ملف 1
أو أ 0
. في الواقع ، فإنه يعيد سلسلة فارغة والتي يتم استخدامها عادةً في سياق رقمي أو منطقي.
سترى هذا في كثير من الأحيان في رمز الجولف المسابقات ، لأنها أقصر من استخدام الثلاثية ? :
عامل مع 1
و 0
($test ? 1 : 0
).
!! undef == 0
!! 0 == 0
!! 1 == 1
!! $obj == 1
!! 100 == 1
undef ? 1 : 0 == 0
0 ? 1 : 0 == 0
1 ? 1 : 0 == 1
$obj ? 1 : 0 == 1
100 ? 1 : 0 == 1
نصائح أخرى
ليس.
إنه يحول القيمة إلى منطقية (أو أقرب ما يصل بيرل إلى مثل هذا الشيء).
نظرًا لأن ثلاث إجابات أخرى تدعي أن النطاق هو "0" أو "1" ، فقد اعتقدت أنني أذكر أن المنطقون في بيرل (كما أعود من قبل المشغلين مثل ==
, not
, وما إلى ذلك) undef
و 1
, ، ليس 0
و 1
.