PowerShell / الأساسي: النسخ والكائنات والأنواع والدوال / الدرس 3
تعريف الأنواع والفارغ وعقود المجموعات
ميز القيمة والمصفوفة والخريطة والكائن والتحويل والمقارنة قبل الاعتماد على عرض مريح.
في هذه الصفحة
أهداف الدرس
- شرح الأنواع وحدود التحويل الصريحة.
- فصل null والنص الفارغ والصفر وfalse.
- اختيار شكل مجموعة وترتيب ثابتين.
لا تحدد القيمة المعروضة نوع المتغير
تحمل المتغيرات قيماً تؤثر أنواعها في التحويل والمقارنة والطرق والتسلسل. قد يطلب قيد النوع تحويلاً ولا يتحقق من المعنى. ليست أرقام نصية كمية مقبولة تلقائياً وقد يبقى المعرف نصاً. حدد القواعد والمدى والمحلية قبل التحليل، وتؤثر أنواع .NET وتحميل الطرق وإصدارها. افحص النوع والعقد لا تشابه العرض. وينبغي أن يحدد عقد العدد العلامة والمدى والمحلية المقبولة، بينما يبقى المعرف نصاً إذا كانت أصفاره أو تمثيله جزءاً من هويته.
يتطلب الغياب وما يشبه false قرارات منفصلة
تختلف null والفارغ والقائمة الخالية والصفر وfalse ولو تشابه الشرط العام. حدد الغياب أو الفراغ المقصود أو التعطيل أو الصفر، ولا ترفض صفراً صالحاً أو قائمة لا عمل. للمقارنة مع null سياق مجموعات فاختبر الاصطلاح الموثق. ليفشل المطلوب الغائب لا يتحول لافتراضي يغير القصد. فغياب المفتاح يختلف من وجوده بقيمة فارغة، والتعطيل المنطقي يختلف من صفر كمي صالح؛ ولا ينبغي أن يختزل الفرع هذه القرارات في اختبار صدق واحد.
عدد العناصر جزء من واجهة الخرج
قد تجعل الأنابيب والإسناد الصفر والمفرد والمتعدد مختلفين. ابن @() لعقد قائمة ثابت وميز المصفوفة من عناصرها المعدودة. تؤثر الفاصلة وNoEnumerate بسياق محدد فلا تضفهما عشوائياً. وللمفاتيح والترتيب شأن آخر فرتب أو استخدم منظماً. لا تجعل صف اليوم واجهة مفردة عرضاً. كما أن ترتيب خريطة عادية ليس وعد عرض يجب بناء التقارير عليه؛ يمكن استخدام ترتيب صريح أو فرز بحسب متطلب المستهلك عندما يكون الترتيب مهماً.
$items = @('red apple', '', 'archive')
$record = [pscustomobject]@{ Name = 'review'; Count = $items.Count }
$record.Name
$record.Count
السجل المقصود review بعدد3 يشمل الفارغ، ولم ينفذ المقطع.
قد تختلف العوامل مع المجموعات
قد تعيد مقارنة اليسار المجموعة عناصر لا منطقاً واحداً ويتبع التحويل الأنواع. تتجاهل عوامل نصية كثيرة الحالة افتراضياً ولها صيغ حساسة. ميز الحرفي والنمط والمنتظم ولا تساو مفاتيح الخريطة بـ JSON. حدد المقارنة قبل if واختبر الفارغ والمتعدد والحالة والعدد المشوه. وقد تعيد مقارنة المجموعة أكثر من عنصر مطابق، لا قيمة واحدة، لذلك يجب معرفة الناتج الذي سيصل إلى الشرط بدلاً من افتراض مساواة كل مقارنة بمنطق مفرد.
استخدام مخطط معلن لا تحويل عرضي
يميز النموذج الغياب والفراغ والنوع ولا يدعي تحويل PowerShell. افحص النوع الدقيق كي لا تقبل علاقات Python الفرعية خطأ. سم ما فحص، وليختبر المحرك لاحقاً الربط والعوامل والناتج. يفيد المخطط قبل الأثر ولا يثبت .NET أو الوحدة أو تسلسل البعيد؛ افصل الأدلة. ولا يحل نجاح المخطط محل اختبار التحويل الفعلي في الرابط، لأن أنواع المعاملات وطرق .NET وخيارات المحرك قد تضيف سلوكاً لم ينفذه النموذج.
record = {'enabled': False, 'count': 0, 'label': ''}
print('enabled_boolean=' + str(type(record['enabled']) is bool))
print('zero_is_present=' + str('count' in record and record['count'] == 0))
print('empty_label=' + str(record['label'] == ''))
enabled_boolean=True
zero_is_present=True
empty_label=True
يحفظ المثبت false والصفر والفارغ قيماً موجودة مستقلة لا يقيم صدق PowerShell أو تحويله.
الأخطاء الشائعة وإصلاحها
اعتبار الصفر غياباً
- لماذا يحدث؟
- استبدل الصدق العام العقد.
- كيف تصلحه؟
- افحص الوجود والنوع والمدى.
- كيف تتجنب تكراره؟
- أدرج الصفر وfalse الصحيحين.
كسر نتيجة مفردة لشيفرة المجموعة
- لماذا يحدث؟
- لم يحدد العدد والتعداد.
- كيف تصلحه؟
- عرف قائمة ثابتة واختبر الحالات.
- كيف تتجنب تكراره؟
- لا تستنتج المخطط من العرض.
تغير الحالة أو التحويل نتيجة المساواة
- لماذا يحدث؟
- افتُرضت دلالة العامل والمعامل.
- كيف تصلحه؟
- اختر الدلالة والنوع المتحقق.
- كيف تتجنب تكراره؟
- اختبر الحالة والمشوه.
اختبر فهمك
1. لماذا قد يبقى المعرف0012 نصاً؟
اعرض الحل المشروح
قد تكون الأصفار هوية لا كمية، ويغير العدد التمثيل والمساواة؛ حدد القواعد واحفظها بالتسلسل والمعاملات.
2. ما الحالات التي تحمي عقد إعادة مجموعة؟
اعرض الحل المشروح
اختبر الصفر والمفرد والمتعدد والمتداخل المدعوم وتحقق من الأنواع والقيم لا العدد والعرض فقط.
أهم ما تعلمته
- عرف الوجود والنوع والعدد والمقارنة مستقلة.
- تحقق قبل التحويل التلقائي.