المسارات
/
Gleam
Gleam
/
المنهج
/
الأنواع المعتمة
ال

الأنواع المعتمة في Gleam

4 تمارين

نبذة عن الأنواع المعتمة

الأنواع المعتمة في Gleam هي أنواع مخصصة، لا يمكن إنشاء قيم من هذا النوع أو مطابقتها بنمط إلا في الوحدة التي تعرّف النوع. وهذا مفيد لإنشاء أنواع لا يُراد استخدامها إلا على نحو محدّد.

وتُعرَّف الأنواع المعتمة باستخدام الكلمة المفتاحية opaque.

pub opaque type PositiveInt {
  PositiveInt(inner: Int)
}

نوع PositiveInt هذا مخصّص للاستخدام في الحالات التي نحتاج فيها إلى عدد صحيح، لكن بشرط أن يكون صفرًا أو أكبر. فلا يمكن استخدام Int العادي في Gleam، لأنه قد يكون سالبًا أيضًا.

يمكن للوحدة التي تعرّف هذا النوع أن تعرّف دالة للحصول على قيمة العدد الصحيح الداخلية، ودالة لإنشاء نوع PositiveInt تُرجع خطأً إذا لم تكن القيمة موجبة.

pub fn from_int(i: Int) -> Result(PositiveInt, String) {
  case i {
    _ if i < 0 -> Error("Value must be positive")
    _ -> Ok(PositiveInt(i))
  }
}

pub fn to_int(i: PositiveInt) -> Int {
  i.inner
}

ومع هذه الـ API، لا تستطيع الوحدات الأخرى إنشاء PositiveInt بقيمة سالبة، لذا يمكن لأي دالة تأخذ PositiveInt أن تتأكد أن القيمة موجبة.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم الأنواع المعتمة

التدريب مقفل

افتح 1 تمرين إضافي لممارسة الأنواع المعتمة