یک string در F# شیئی است که متن تغییرناپذیر را بهصورت دنبالهای از کاراکترهای یونیکد (حروف، ارقام، علائم نگارشی و غیره) بازنمایی میکند و به این شکل تعریف میشود:
let fruit = "Apple"
کار با «رشته»ها یا با فراخوانی متدهای خود رشته انجام میشود و یا با استفاده از توابع ماژول String. وقتی رشتهای ساخته شد، دیگر مقدارش هرگز تغییر نمیکند. هر متد یا تابعی هم که به نظر برسد رشته را تغییر میدهد، در واقع رشتهی جدیدی برمیگرداند.
رشتهها را میتوان به چند روش مختلف به هم چسباند یا قالببندی کرد.
+ برای به هم چسباندن استفاده کنید:let sentence = "Apple" + " is a type of fruit."
sprintf برای قالببندی متن استفاده کنید؛ در این حالت در متن قالب جاینگهدار دارید (%s برای یک string) و مقادیر را بهعنوان آرگومان میدهید:let sentence = sprintf "%s is a type of %s." "Apple" "fruit"
در این تمرین، خطوط لاگ را پردازش میکنید.
هر خط لاگ رشتهای است که به این شکل قالببندی شده است: "[<LEVEL>]: <MESSAGE>".
سه سطح لاگ متفاوت وجود دارد:
INFOWARNINGERRORشما سه کار دارید. هر کار یک خط لاگ میگیرد و از شما میخواهد کاری با آن انجام دهید.
تابع message را طوری پیادهسازی کنید که پیام یک خط لاگ را برگرداند:
message "[ERROR]: Invalid operation"
// => "Invalid operation"
هر فاصلهی خالی ابتدا یا انتهای رشته باید حذف شود:
message "[WARNING]: Disk almost full\r\n"
// => "Disk almost full"
تابع logLevel را طوری پیادهسازی کنید که سطح لاگ یک خط لاگ را برگرداند؛ این مقدار باید با حروف کوچک برگردانده شود:
logLevel "[ERROR]: Invalid operation"
// => "error"
تابع reformat را پیادهسازی کنید که خط لاگ را دوباره قالببندی میکند و پیام را اول و سطح لاگ را بعد از آن داخل پرانتز قرار میدهد:
reformat "[INFO]: Operation completed"
// => "Operation completed (info)"