القوائم المحددة النوع
لبات 0.7.0 · الإصدار الحالي
عمليات 0.7.0 الحالية ودعم المضيف والأمثلة وقواعد الإخفاق.
محتويات الصفحة
قيم القوائم المحددة النوع
في لبات 0.7.0، تمثل قائمة<T>/list<T> تسلسلا قابلا للنمو بعناصر من نوع مخزن واحد دقيق، وتعمل في المتصفح والمضيف الأصلي. تستخدم معاملات الأنواع الأقواس الزاوية، وتبني الأقواس المربعة القيم. تقبل القوائم المتداخلة والسجلات والنتائج. يرفض الفحص عناصر unit ومساواة قائمتين كاملتين.
يستنتج الليترال غير الفارغ نوع عناصره دون تحويل عددي. يحتاج الليترال الفارغ نوعا متوقعا من الربط أو الإسناد أو المعامل أو الإرجاع. تقيم العناصر بترتيب كتابتها وتقبل فاصلة أخيرة.
مقطع توضيحي
دع فارغة: قائمة<ص64> = [];
دع قيم: قائمة<ص64> = [3, 4, 5,];قراءة العناصر
تعيد طول/length: (list<T>) -> i64 عدد العناصر في زمن ثابت. تقرأ values[index] عنصرا بالقيمة. نوع الفهرس i64 ويبدأ من الصفر؛ يوقف الفهرس السالب أو المساوي للطول أو الأكبر منه التنفيذ بسبب list-index-out-of-bounds.
التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- لا يتطلب معرفة سابقة لفتحه وفحصه.
الإدخال: لا يحتاج إلى أسطر إدخال.
دالة المجموع(القيم: قائمة<ص64>) -> ص64 {
أرجع القيم[0] + القيم[1] + القيم[2].
}
دالة ابدأ_الرئيسية() -> ص64 {
دع القيم: قائمة<ص64> = [3, 4, 5].
إذا (طول(القيم) لا يطابق 3) { أرجع 1. }
إذا (المجموع(القيم) لا يطابق 12) { أرجع 2. }
دع بايتات: قائمة<ط8> = [0, 255].
إذا (طول(بايتات) لا يطابق 2 أو بايتات[0] لا يطابق 0 أو بايتات[1] لا يطابق 255) { أرجع 3. }
دع كسور: قائمة<ع64> = [0.5].
إذا (كسور[0] لا يطابق 0.5) { أرجع 4. }
اطبع("12").
أرجع 0.
}
النتائج المتوقعة
{
"browser": {
"check": "success",
"class": "success",
"output": "12",
"processStatus": 0
},
"native": {
"check": 0,
"status": 0,
"output": "12"
}
}التعديل والنسخ المستقلة
تأخذ أضف/append موضع قائمة قابل للتعديل وقيمة من نوع عنصرها الدقيق، وتضيف القيمة وتعيد unit. يستبدل الإسناد المفهرس عنصرا موجودا ولا ينمي القائمة. تتطلب العمليتان ربطا جذريا من نوع متغير/var. لا يمثل ربط دع/let أو معامل دالة أو قيمة مؤقتة أو إسقاط حمولة نتيجة موضعا قابلا للتعديل.
ينسخ الإسناد والمعامل والإرجاع وحقول القيم المركبة القيم. لا يغير تعديل نسخة، بما فيها قائمة متداخلة، النسخ الأخرى. قد يشارك وقت التشغيل التخزين حتى التعديل، لكنه لا يعرض أسماء تشترك في قيمة قابلة للتعديل. يحل التعديل الفهارس من اليسار إلى اليمين مرة واحدة قبل تقييم القيمة الجديدة. الصيغة append(xs, xs[0]) صالحة.
التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- لا يتطلب معرفة سابقة لفتحه وفحصه.
الإدخال: لا يحتاج إلى أسطر إدخال.
دالة ابدأ_الرئيسية() -> ص64 {
متغير قيم: قائمة<ص64> = [1, 2].
أضف(قيم, 3).
إذا (طول(قيم) لا يطابق 3) { أرجع 1. }
متغير نسخة: قائمة<ص64> = قيم.
نسخة[0] = 9.
إذا (قيم[0] لا يطابق 1) { أرجع 2. }
إذا (نسخة[0] لا يطابق 9) { أرجع 3. }
أضف(قيم, قيم[0]).
إذا (طول(قيم) لا يطابق 4) { أرجع 4. }
إذا (قيم[3] لا يطابق 1) { أرجع 5. }
متغير متداخل: قائمة<قائمة<ص64>> = [[1], [2]].
دع نسخة_متداخلة: قائمة<قائمة<ص64>> = متداخل.
متداخل[0][0] = 7.
إذا (نسخة_متداخلة[0][0] لا يطابق 1) { أرجع 6. }
إذا (متداخل[0][0] لا يطابق 7) { أرجع 7. }
متغير موسع: قائمة<ص64> = [].
متغير ك = 0.
طالما (ك < 32) { أضف(موسع, ك * 2). ك = ك + 1. }
إذا (طول(موسع) لا يطابق 32) { أرجع 8. }
إذا (موسع[31] لا يطابق 62) { أرجع 9. }
موسع[0] = موسع[31].
إذا (موسع[0] لا يطابق 62) { أرجع 10. }
متغير بايتات: قائمة<ط8> = [0, 255].
متغير نسخة_بايتات: قائمة<ط8> = بايتات.
نسخة_بايتات[0] = 255.
إذا (بايتات[0] لا يطابق 0 أو نسخة_بايتات[0] لا يطابق 255) { أرجع 11. }
متغير كسور: قائمة<ع64> = [0.5].
كسور[0] = 1.5.
إذا (كسور[0] لا يطابق 1.5) { أرجع 12. }
اطبع("32").
أرجع 0.
}
النتائج المتوقعة
{
"browser": {
"check": "success",
"class": "success",
"output": "32",
"processStatus": 0
},
"native": {
"check": 0,
"status": 0,
"output": "32"
}
}التخزين والإخفاقات
تحفظ خانات القوائم العددية عروضها الدقيقة كما يوضح التخزين العددي. يختلف الطول عن السعة؛ لا توجد واجهة بايتات عامة أو ضمان لتخطيط C. تحسب القوائم المملوكة لوقت التشغيل وعناصرها المحتفظ بها ضمن ذاكرة التنفيذ. لا تعرض حدود الموارد أو فشل التخصيص تعديلا ملتزما جزئيا.
يرفض الفحص اختلاف أنواع العناصر والليترالات الفارغة بلا نوع وأهداف التعديل غير الصالحة وتعديل الربط الثابت. الوصول خارج النطاق توقف غير قابل للاسترداد، وليس نتيجة قابلة للاسترداد.
النطاق والأمثلة الكاملة
توسع القوائم MVP التاريخي. اقرأ كل صيغة موردة في القوائم المحددة النوع وتعديل القوائم، أو انتقل إلى السجلات ودلالات القيمة.