در 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)"