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)"
سجّل في Exercism لتتعلّم وتتقن F# عبر 18 مفهومًا148 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.