تخطَّ إلى المحتوى

الأنواع

منقول من الكتاب المرجعي: docs/handbook/language/02-types.md · الإيداع 7a52f6c

القاعدة. لكل قيمة نوع يُعرف عند الترجمة. نوع المتغير يثبت من أول إسناد، أو يُكتب بعد اسمه: س عدد = 3. لا تحويل ضمني إلا من عدد إلى كسر في الحساب والإسناد (semantics.md (وثيقة في مستودع المجمّع)).

النوع القيمة ملاحظات
عدد صحيح بإشارة، 64 بتاً تجاوز الحد خطأ تشغيل (مع --wrap-overflow يلتف)
كسر عشري مضاعف الدقة (IEEE-754، 64 بتاً) 1 / 2 صحيحة، 1 / 2.0 كسرية
نص بايتات UTF-8 لا تتغير الطول والفهرسة بنقاط الترميز؛ + بين نصين فقط
رمز نقطة ترميز واحدة 'م'، وعنصر نص ن[0]
منطقي صواب أو خطاء
لاشيء غياب القيمة يُسند إلى نص ومؤشر[...] ومؤشر_خام
قائمة[ن] عناصر من نوع واحد، تكبر مرجعية: ب = ق اسمان للقائمة نفسها
قاموس[م, ق] مفاتيح نص أو عدد أو رمز أو منطقي مرجعي؛ المرور بترتيب الإدراج
مصفوفة[ن, حجم] حجم ثابت بالقيمة: تُنسخ عند الإسناد
هيكل حقول مسمّاة (الهياكل) بالقيمة
مؤشر[ن] ومؤشر_خام وشريحة[ن] الطبقة المنخفضة (الطبقة المنخفضة: خطر والشرائح والمؤشرات)
مخصص مخصص ذاكرة (الذاكرة: المخصصات وخاتمه)
داله(أنواع) نوع مؤشر دالة (الدوال) منذ 0.7.0

أنواع بحجم ثابت (عدد8..عدد32، طبيعي8..طبيعي64، بايت، كسر32) أنواع تخزين لا أنواع متغيرات: تُكتب عنصراً في مؤشر[...] وشريحة[...] ومصفوفة[...] في حقل، وحقلاً في هيكل؛ قراءتها عدد أو كسر، وكتابتها تفحص المدى.

مثال
س عدد = 7
ك = س / 2.0
اسماء قائمة[نص] = []
اضف(اسماء, "ميم")
ب = اسماء
اضف(ب, "نون")
م مصفوفة[عدد, 2] = [1, 2]
ن = م
ن[0] = 9
اطبع(ك, " ", اسماء, " ", م, " ", ن)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
3.5 [ميم, نون] [1, 2] [9, 2]

القيود المعروفة. لا أنواع معمَّمة يكتبها المستخدم (قائمة بلا نوع عناصر في معامل تُنسخ الدالة لكل نوع، القسم الدوال). لا أنواع جمع تحمل أعضاؤها قيماً؛ والتعداد (أعضاء بلا قيم) في التعداد. مقارنة عدد بكسر فوق 2^53 تقريبية. وفهرسة النص بالحرف (ن[ف]) كلفتها خطية في طوله: النص UTF-8، والوصول إلى الحرف رقم ف يعدّ من أوله؛ للمرور على النص كله لكل ح في ن (strings-and-print.md (وثيقة في مستودع المجمّع)).

أخطاء محتملة.

مثال
س = 1
س = "نص"
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0408] سطر 2:1 - لا يمكن تعيين قيمة من النوع 'نص' للمتغير 'س' من النوع 'عدد'   2 | س = "نص"     | ^  تلميح: النصوص لا تتحول إلى أعداد تلقائياً.

رمز الخروج: 2

في فهرس الأخطاء: E0408