Nil في Gleam هو نوع له قيمة واحدة، تُسمى أيضًا Nil. وهو مشابه لـ void في لغات أخرى من حيث أنه يُستخدم عندما لا يكون لدى الدالة قيمة أنسب تُرجعها.
io.println("Hello, Joe!")
// -> Nil
قيم Gleam ليست «قابلة لأن تكون Nil» أو «قابلة للعدم» كما في بعض اللغات الأخرى. لا يمكن أن تكون القيمة Nil إلا إذا كان نوعها Nil، ولا يمكن أبدًا أن تكون قيمة من أي نوع آخر Nil.
مثل معظم لغات البرمجة، لدى Gleam «آثار جانبية»، لذا يمكن للدوال أن تقرأ حالة العالم وتغيّرها، بالإضافة إلى إرجاع قيمة.
توفّر وحدة gleam/io في مكتبة Gleam القياسية دوالًا لطباعة السلاسل النصية على الطرفية.
io.println("Hello, Joe!")
// Hello, Joe!
// -> Nil
قد توفّر حزم أخرى دوال إدخال/إخراج أخرى، مثل simplifile، وهي حزمة توفّر دوالًا لقراءة الملفات وكتابتها.
simplifile.read("favourite-colour.txt")
// -> Ok("Pink\n")
بوريس مهووس كبير بقطارات السكك الحديدية المصغّرة، وقد قرر أن يشارك شغفه مع العالم بإطلاق رسالة إخبارية. سيبدأ بإرسال العدد الأول من الرسالة الإخبارية إلى الأصدقاء والمعارف الذين يشاركونه هذه الهواية، وعناوين بريدهم الإلكتروني محفوظة في ملف نصي.
تلميح: استخدم وحدة simplifile لعمليات الملفات.
نفّذ الدالة read_emails. تأخذ سلسلة نصية تمثل مسار ملف نصي يحتوي على عناوين بريد إلكتروني مفصولة بأسطر جديدة، وتُرجع قائمة بعناوين البريد الإلكتروني الموجودة في الملف.
read_emails("/home/my_user/documents/model_train_friends_emails.txt")
// -> Ok(["rick@example.com", "choochoo42@example.com", "anna@example.com"])
إرسال البريد الإلكتروني مهمة قد تفشل لأسباب كثيرة غير متوقعة، مثل خطأ مطبعي في عنوان البريد الإلكتروني أو مشكلات مؤقتة في الشبكة. ولضمان قدرتك على إعادة محاولة إرسال الرسائل إلى جميع أصدقائك دون إرسال رسائل مكررة، تحتاج إلى تسجيل عناوين البريد الإلكتروني التي استلمت الرسالة بالفعل. ولهذا ستحتاج إلى ملف سجل.
نفّذ الدالة create_log_file. تأخذ مسار ملف وتُنشئ ملفًا فارغًا جديدًا في ذلك الموقع.
create_log_file("/home/my_user/documents/newsletter_issue1_log.txt")
// -> Ok(Nil)
نفّذ الدالة log_sent_email. تأخذ مسار ملف سجل وسلسلة نصية تحتوي على عنوان البريد الإلكتروني. وتكتب عنوان البريد الإلكتروني في الملف، متبوعًا بسطر جديد.
log_sent_email(
"/home/my_user/documents/newsletter_issue1_log.txt",
"joe@example.com",
)
// -> Ok(Nil)
الآن بعد أن أصبحت لديك كل اللبنات الأساسية لعملية إرسال البريد الإلكتروني، عليك دمجها معًا في دالة واحدة.
نفّذ الدالة send_newsletter. تأخذ مسار الملف الذي يحتوي على عناوين البريد الإلكتروني، ومسار ملف السجل، ودالة مجهولة ترسل بريدًا إلكترونيًا إلى عنوان بريد إلكتروني مُعطى.
ينبغي أن تقرأ جميع عناوين البريد الإلكتروني من الملف المُعطى وتحاول إرسال بريد إلكتروني إلى كل واحد منها. وإذا أرجعت الدالة المجهولة التي ترسل البريد الإلكتروني قيمة Ok، فاكتب عنوان البريد الإلكتروني في ملف السجل. واحرص على فعل ذلك بمجرد إرسال البريد الإلكتروني.
send_newsletter(
"model_train_friends_emails.txt",
"newsletter_issue1_log.txt",
send_email,
)
// -> Ok(Nil)
سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.