المسارات
/
Gleam
Gleam
/
التمارين
/
مستويات السجل
مستويات السجل

مستويات السجل

تمرين تعلّمي

مقدمة

السلاسل النصية

السلاسل النصية في Gleam هي نصوص غير قابلة للتغيير محاطة بعلامات اقتباس مزدوجة. وهي تدعم محارف يونيكود، ويمكن أن تمتد على عدة أسطر.

let greeting = "Hello, Joe! 📞"

let multi_line_string = "one
two
three"

يمكن ضم السلاسل النصية معًا باستخدام العامل <>:

let name = "Mike"
"Hello, " <> name <> "!"
// -> "Hello, Mike!"

توفّر وحدة gleam/string في المكتبة القياسية دوالًا للتعامل مع السلاسل النصية.

يمكن مطابقة السلاسل النصية في تعبيرات case:

pub fn on_an_excellent_adventure(name: String) -> Bool {
  case name {
    "Bill" -> True
    "Ted" -> True
    _ -> False
  }
}

إذا أردت المطابقة على بداية سلسلة نصية وإسناد الباقي إلى متغير، فيمكنك استخدام نمط العامل <>:

pub fn profession(name: String) -> String {
  case name {
    "Dr " <> rest -> rest <> " is a doctor"
    _ -> "I'm not sure what " <> name <> " does"
  }
}

التعليمات

في هذا التمرين ستتعامل مع أسطر السجل.

كل سطر سجل هو سلسلة نصية مُنسّقة كما يلي: "[<LEVEL>]: <MESSAGE>".

هناك ثلاثة مستويات مختلفة للسجل:

  • INFO
  • WARNING
  • ERROR

لديك ثلاث مهام، كل واحدة منها تأخذ سطر سجل وتطلب منك فعل شيء به.

1. استخرج الرسالة من سطر السجل

نفّذ الدالة message لتُرجع رسالة سطر السجل:

message("[ERROR]: Invalid operation")
// -> "Invalid operation"

يجب إزالة أي مسافات بيضاء في البداية أو النهاية:

message("[WARNING]:  Disk almost full\r\n")
// -> "Disk almost full"

2. استخرج مستوى السجل من سطر السجل

نفّذ الدالة log_level لتُرجع مستوى السجل الخاص بسطر السجل، ويجب أن يكون بأحرف صغيرة:

log_level("[ERROR]: Invalid operation")
// -> "error"

3. أعد تنسيق سطر السجل

نفّذ الدالة reformat التي تعيد تنسيق سطر السجل، فتضع الرسالة أولًا ثم مستوى السجل بعدها بين الأقواس الهلالية:

reformat("[INFO]: Operation completed")
// -> "Operation completed (info)"
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Gleam Exercism

مستعد لبدء مستويات السجل؟

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