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

أنواع البيانات

مرجع شامل لجميع أنواع البيانات المدعومة في لغة كنوز.

النوعالحجمالنطاقالوصف
صحيح32/64 بت-عدد صحيح افتراضي
ص3232 بت-2^31 إلى 2^31-1عدد صحيح 32 بت
ص6464 بت-2^63 إلى 2^63-1عدد صحيح 64 بت
دع عدد: صحيح = 42;
دع كبير: ص64 = 9223372036854775807;
دع صغير: ص32 = 2147483647;
النوعالحجمالدقةالوصف
عشري64 بت~15 رقمعدد عشري افتراضي
ع3232 بت~7 أرقامعدد عشري 32 بت
ع6464 بت~15 رقمعدد عشري 64 بت
دع بي: عشري = 3.14159265359;
دع صغير: ع32 = 3.14;
دع دقيق: ع64 = 3.141592653589793;
النوعالقيمالوصف
منطقيصح, خطأقيمة منطقية
دع نشط: منطقي = صح;
دع مخفي: منطقي = خطأ;
إذا نشط {
اطبع("الحالة نشطة");
}
النوعالوصف
حرفحرف Unicode واحد
دع حرف_عربي: حرف = 'ع';
دع حرف_انجليزي: حرف = 'A';
دع رمز: حرف = '🌍';
النوعالوصف
نصسلسلة نصية
دع اسم: نص = "أحمد محمد";
دع رسالة = "مرحباً بالعالم";
// نص متعدد الأسطر
دع قصيدة = "السطر الأول
السطر الثاني
السطر الثالث";

مجموعة من العناصر من نفس النوع بحجم ثابت.

// تعريف مصفوفة
دع أعداد: [صحيح; 5] = [1, 2, 3, 4, 5];
// استنتاج النوع
دع فواكه = ["تفاح", "موز", "برتقال"];
// مصفوفة متغيرة
دع متغير درجات = [85, 90, 78, 92];
درجات[0] = 95;
// الوصول للعناصر
اطبع_صحيح(أعداد[0]); // 1

مجموعة من القيم من أنواع مختلفة.

// صف بسيط
دع نقطة = (10, 20);
// صف بأنواع مختلفة
دع سجل: (نص, صحيح, منطقي) = ("أحمد", 25, صح);
// الوصول للعناصر
دع س = نقطة.0; // 10
دع ص = نقطة.1; // 20

مجموعة ديناميكية من العناصر.

// إنشاء متجه
دع متغير أعداد: متجه<صحيح> = متجه[];
// إضافة عناصر
أعداد.ادفع(10);
أعداد.ادفع(20);
أعداد.ادفع(30);
// الطول
اطبع_صحيح(أعداد.طول()); // 3
// الوصول
اطبع_صحيح(أعداد[0]); // 10
// التكرار
لكل عدد في أعداد {
اطبع_صحيح(عدد);
}

مجموعة من أزواج مفتاح-قيمة.

// إنشاء قاموس
دع متغير درجات: قاموس<نص, صحيح> = قاموس[];
// إضافة عناصر
درجات.أضف("أحمد", 95);
درجات.أضف("محمد", 88);
درجات.أضف("سارة", 92);
// الوصول للقيمة
طابق درجات.اقرأ("أحمد") {
بعض(د) => { اطبع_صحيح(د); }
عدم => { اطبع("غير موجود"); }
}
// التكرار
لكل (اسم, درجة) في درجات {
اطبع(اسم);
اطبع_صحيح(درجة);
}

الأنواع المركبة المتقدمة

Section titled “الأنواع المركبة المتقدمة”
هيكل شخص {
اسم: نص,
عمر: صحيح,
متزوج: منطقي
}
// إنشاء كائن
دع ش = شخص {
اسم: "أحمد",
عمر: 30,
متزوج: صح
};
// الوصول للحقول
اطبع(ش.اسم);
اطبع_صحيح(ش.عمر);
تعداد لون {
أحمر,
أخضر,
أزرق
}
تعداد حالة {
متصل,
منفصل,
جاري_الاتصال(صحيح) // مع قيمة مرفقة
}
دع اللون = لون::أحمر;
طابق اللون {
لون::أحمر => { اطبع("أحمر"); }
لون::أخضر => { اطبع("أخضر"); }
لون::أزرق => { اطبع("أزرق"); }
}

للقيم التي قد تكون موجودة أو غير موجودة.

// تعريف اختياري
دع قيمة: اختياري<صحيح> = بعض(42);
دع فارغ: اختياري<صحيح> = عدم;
// المطابقة
طابق قيمة {
بعض(ق) => { اطبع_صحيح(ق); }
عدم => { اطبع("لا قيمة"); }
}
// دالة ترجع اختياري
دالة ابحث(أعداد: [صحيح; 5], هدف: صحيح) -> اختياري<صحيح> {
لكل ي في 0..5 {
إذا أعداد[ي] == هدف {
أرجع بعض(ي);
}
}
أرجع عدم;
}

للعمليات التي قد تنجح أو تفشل.

// دالة ترجع نتيجة
دالة قسمة(أ: صحيح, ب: صحيح) -> نتيجة<صحيح, نص> {
إذا ب == 0 {
أرجع فشل("لا يمكن القسمة على صفر");
}
أرجع موافق(أ / ب);
}
// التعامل مع النتيجة
طابق قسمة(10, 2) {
موافق(ناتج) => { اطبع_صحيح(ناتج); }
فشل(خطأ) => { اطبع(خطأ); }
}
النوعالوصف
&نمرجع للقراءة فقط
&متغير نمرجع قابل للتغيير
دالة مربع(مرجع_عدد: &صحيح) -> صحيح {
أرجع (*مرجع_عدد) * (*مرجع_عدد);
}
دالة ضاعف(مرجع_عدد: &متغير صحيح) {
*مرجع_عدد *= 2;
}
دع متغير س = 5;
اطبع_صحيح(مربع(&س)); // 25
ضاعف(&متغير س);
اطبع_صحيح(س); // 10
// هيكل عام
هيكل صندوق<ن> {
قيمة: ن
}
دع صندوق_عدد = صندوق<صحيح> { قيمة: 42 };
دع صندوق_نص = صندوق<نص> { قيمة: "مرحباً" };
// دالة عامة
دالة طباعة_نوع<ن>(قيمة: ن) {
// استخدام القيمة
}
منإلىالدالة
صحيحنصصحيح_لنص(س)
عشريصحيحعشري_لصحيح(س)
نصصحيحتحليل النص
// تحويل صحيح إلى نص
دع عدد = 42;
دع نص_عدد = صحيح_لنص(عدد);
// تحويل عشري إلى صحيح
دع عشري_ق = 3.7;
دع صحيح_ق = عشري_لصحيح(عشري_ق); // 3