يمكنك في Gleam استخدام الاسم المستعار للنوع لمنح اسم ملائم لنوع موجود تكون كتابته مرهقة بخلاف ذلك.
pub type Headers =
List(#(String, String))
pub fn html_headers() -> Headers {
[
#("content-type", "text/html"),
#("x-frame-options", "DENY"),
]
}
عند كتابته باستخدام pub type يمكن استخدام الاسم المستعار خارج الوحدة التي عُرّف فيها. وإذا حُذفت pub يصبح الاسم المستعار خاصًّا ولا يمكن الإشارة إليه في وحدات أخرى.
القواميس في Gleam هي بنية البيانات المخصصة لتخزين المعلومات في أزواج من المفاتيح والقيم. وفي لغات أخرى، قد تُعرف أيضًا باسم المصفوفات الترابطية أو جداول التجزئة أو القواميس.
يمكن استخدام أي نوع لمفاتيح القاموس وقيمه، وهي لا تضمن ترتيب مدخلاتها عند الوصول إليها أو إرجاعها.
تُنشأ القواميس وتُعالج باستخدام دوال من وحدة gleam/dict.
// Create an empty dict
let dict1 = dict.new()
// Create a dict with some values
let dict2 = dict.from_list([
#("name", "Gleam"),
#("colour", "Pink"),
])
// Add a value to a dict
let dict3 = dict.insert(dict2, "website", "https://gleam.run")
// Get a value from a dict
let name = dict.get(dict3, "name")
// -> Ok("Gleam")
في هذا التمرين، ستُنفّذ طريقة لتتبّع النتائج الأعلى لأشهر لعبة في قاعة الألعاب المحلية لديك.
لديك 5 دوال لتنفيذها، معظمها يتعلق بمعالجة قاموس يحفظ النتائج الأعلى.
أنشئ دالة create_score_board تُرجع قاموسًا يعمل كلوحة نتائج.
ستكون مفاتيح هذا الكائن أسماء اللاعبين، وستكون قيمه نتائجهم.
لأغراض الاختبار، تريد تضمين إدخال واحد مباشرةً في الكائن.
يجب أن يتكون هذا الإدخال الأولي من "The Best Ever" اسمًا للاعب و1_000_000 نتيجة.
create_score_board()
// returns an object with one initial entry
لإضافة لاعب إلى لوحة النتائج الأعلى، عرّف دالة add_player.
تقبل 3 معاملات:
تُرجع الدالة قاموسًا مع اللاعب والنتيجة المضافين.
إذا خالف اللاعبون قواعد قاعة الألعاب، يُزالون يدويًا من لوحة النتائج الأعلى.
عرّف remove_player التي تأخذ معاملين:
يجب أن تُرجع هذه الدالة القاموس بدون اللاعب الذي أُزيل.
إذا لم يكن اللاعب على اللوحة من الأساس، فلا يجب أن يحدث أي شيء للوحة، بل تُرجع كما هي.
إذا أنهى لاعب لعبة أخرى في قاعة الألعاب، تُضاف كمية معينة من النقاط إلى النتيجة السابقة على اللوحة.
نفّذ update_score، التي تأخذ 3 معاملات:
يجب أن تُرجع الدالة قاموسًا بالنتيجة المحدَّثة.
إذا لم يكن اللاعب على اللوحة من الأساس، فلا يجب أن يحدث أي شيء للوحة، بل تُرجع كما هي.
تحتفظ قاعة الألعاب بلوحة نتائج منفصلة أيام الاثنين. في نهاية اليوم، يحصل كل لاعب على تلك اللوحة على 100 نقطة إضافية.
نفّذ الدالة apply_monday_bonus التي تقبل لوحة نتائج.
تُرجع الدالة قاموسًا مع نقاط المكافأة المضافة لكل لاعب مُدرج على تلك اللوحة.
سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.