السلاسل النصية في 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>".
هناك ثلاثة مستويات مختلفة للسجل:
INFOWARNINGERRORلديك ثلاث مهام، كل واحدة منها تأخذ سطر سجل وتطلب منك فعل شيء به.
نفّذ الدالة message لتُرجع رسالة سطر السجل:
message("[ERROR]: Invalid operation")
// -> "Invalid operation"
يجب إزالة أي مسافات بيضاء في البداية أو النهاية:
message("[WARNING]: Disk almost full\r\n")
// -> "Disk almost full"
نفّذ الدالة log_level لتُرجع مستوى السجل الخاص بسطر السجل، ويجب أن يكون بأحرف صغيرة:
log_level("[ERROR]: Invalid operation")
// -> "error"
نفّذ الدالة reformat التي تعيد تنسيق سطر السجل، فتضع الرسالة أولًا ثم مستوى السجل بعدها بين الأقواس الهلالية:
reformat("[INFO]: Operation completed")
// -> "Operation completed (info)"
سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.