ما هو السبب في تقييم أي وقت مضى تجزئة في بيرل في سياق العددية?
سؤال
أدرك أن تقييم مصفوفة في بيرل في سياق عددي مفيد:ينتج عنه # من العناصر.
ولكن ما هو الاستخدام العملي لتكون قادرة على تقييم تجزئة في سياق العددية?على سبيل المثال.
my $scalar_value = %hash;
scalar(%hash)
بقدر ما أفهم ، فإنه ينتج سلسلة مثل "3/4
"إعطاء بعض المعلومات حول الأجزاء الداخلية للتجزئة التي يبدو أنها مفيدة فقط لتصحيح الأخطاء.
المحلول
ينتج قيمة يمكن استخدامها كعلامة صواب / خطأ لمعرفة ما إذا كانت التجزئة فارغة (بدون مفاتيح).
على سبيل المثال:
if (%hash) {
print "Hash has elements\n";
} else {
print "Hash is empty\n";
}
if
يفرض التعبير في سياق عددي بسبب استخدامه كتعبير منطقي.
إنه مفهوم مشابه جدا لاستخدام @array
في سياق عددي لاختبار الفراغ:
if (@array) {
# NOT empty!
}
نصائح أخرى
العددية (٪التجزئة) يتيح لك معرفة ما اذا كان يعمل خوارزمية التجزئة بشكل صحيح.إذا كان لديك 1000 مفتاح وترى شيئا مثل 2/16 وهذا يعني أن جميع المفاتيح تحل إلى 2 فقط من 16 دلاء المخصصة.هذا يعني أن جميع مفاتيحك متشابهة جدا وتسبب الكثير من الاصطدامات ، مما يؤدي إلى عمليات بحث متسلسلة طويلة في المجموعة.
عدد الجرافات الافتراضي هو 8
perl -le '$h{a}=1;print scalar %h'
1/8
بريستاش التجزئة مع 1000 دلاء (إلى أقرب قوة من 2)
perl -le 'keys(%h) = 1000;$h{a}=1;print scalar %h'
1/1024
وهذا يساعد أيضا عندما يبارك تجزئة ل بيرل و.يمكنك تسريع الأمور إذا كنت تعلم أنه سيكون هناك الكثير من المفاتيح.