المسارات
/
Gleam
Gleam
/
التمارين
/
صندوق الكنز
صندوق الكنز

صندوق الكنز

تمرين تعلّمي

مقدمة

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

النوع نوع عام عندما يمكنه أن يحتوي على قيم من أي نوع باستخدام معامل نوع.

على سبيل المثال، نوع Box هذا له معامل النوع a (مكتوب بحروف صغيرة).

pub type Box(a) {
  Box(a)
}

معامل النوع a هو عنصر نائب لأي نوع، لذا يمكن استخدام Box مع السلاسل النصية أو الأعداد الصحيحة أو أي نوع آخر.

Box("Hello, Joe!") // The type is Box(String)

Box(42) // The type is Box(Int)

يمكن للنوع أن يمتلك عدة معاملات نوع عبر فصلها بفواصل.

pub type Pair(a, b) {
  Pair(a, b)
}

الدوال العامة

يمكن أيضًا استخدام معاملات النوع في وسائط الدوال.

تأخذ هذه الدالة قيمة من النوع a وتستدعي دالةً مرتين، تأخذ قيمة من النوع a وتُرجع قيمة من النوع b.

pub fn twice(value: a, f: fn(a) -> b) -> b {
  f(value)
  f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)

التعليمات

في هذا التمرين ستكتب صندوق كنز عامًا (أو سحريًا!) باسم TreasureChest، لتخزين بعض الكنوز.

1. عرّف النوع المخصص العام TreasureChest

عرّف نوعًا مخصصًا اسمه TreasureChest بحالة واحدة.

يجب أن تحمل هذه الحالة قيمة مرتبطة من النوع String، تُستخدم لتخزين كلمة سر صندوق الكنز.

ويجب أن تحمل الحالة أيضًا قيمة عامة مرتبطة، تُستخدم لتخزين الكنز. هذه القيمة عامة حتى يمكن أن يكون الكنز أي شيء.

2. عرّف النوع UnlockResult

عرّف نوعًا مخصصًا اسمه UnlockResult بحالتين.

يجب أن تكون الحالة الأولى Unlocked، وأن تحمل قيمة عامة تُستخدم لتخزين الكنز.

ويجب أن تكون الحالة الثانية WrongPassword، وهي لا تحمل أي قيم.

3. عرّف الدالة get_treasure

يجب أن تأخذ هذه الدالة معاملين

  • نوعًا مخصصًا عامًا TreasureChest
  • قيمة من النوع String (لتجربة كلمة سر)

يجب أن تتحقق هذه الدالة من كلمة السر المُجرَّبة مقابل قيمة String داخل TreasureChest.

يجب أن تُرجع هذه الدالة UnlockResult.

إذا تطابقت كلمتا السر فأرجِع Unlocked مع القيمة العامة الموجودة في TreasureChest (الكنز!).

وإذا لم تتطابق كلمتا السر فأرجِع WrongPassword.

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

مستعد لبدء صندوق الكنز؟

سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.