المسارات
/
Gleam
Gleam
/
التمارين
/
حبيب الثانوية
حبيب الثانوية

حبيب الثانوية

تمرين تعلّمي

مقدمة

عامل الأنبوب

يُسمى العامل |> عامل الأنبوب. يمكن استخدامه لربط استدعاءات الدوال معًا بحيث تُمرَّر القيمة التي أرجعها استدعاء الدالة السابق إلى استدعاء الدالة التالي.

"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"

الكود أعلاه مكافئ لما يلي:

string.append(string.uppercase("hello"), "?!")

سيُمرِّر عامل الأنبوب القيمة إما كوسيط أول إلى استدعاء الدالة، أو كوسيط وحيد إلى استدعاء جديد، حسب أيهما له النوع الصحيح.

100
|> function_that_takes_two_arguments(1)

// Is equivalent to
function_that_takes_two_arguments(100, 1)
100
|> function_that_returns_a_function(1)

// Is equivalent to
function_that_returns_a_function(1)(100)

أحيانًا نريد تمرير القيمة إلى موضع آخر، وفي هذه الحالة يمكن استخدام العنصر النائب _ للإشارة إلى الموضع الذي ينبغي إدراج القيمة فيه.

100
|> some_function(1, _, 2)

التعليمات

في هذا التمرين، ستساعد حبيبين من طلاب المدرسة الثانوية على التعبير عن حبهما على وسائل التواصل الاجتماعي، من خلال توليد قلب بفنّ ASCII يحمل الأحرف الأولى من اسميهما:

     ******       ******
   **      **   **      **
 **         ** **         **
**            *            **
**                         **
**     J. K.  +  M. B.     **
 **                       **
   **                   **
     **               **
       **           **
         **       **
           **   **
             ***
              *

1. الحصول على الحرف الأول من الاسم

نفّذ الدالة first_letter. يجب أن تأخذ اسمًا وتُرجع حرفه الأول. كما يجب أن تزيل أي مسافات زائدة غير ضرورية من الاسم.

first_letter("Jane")
// -> "J"

2. تنسيق الحرف الأول في صورة حرف أولي

نفّذ الدالة initial. يجب أن تأخذ اسمًا وتُرجع حرفه الأول مكتوبًا بحرف كبير، متبوعًا بنقطة. واحرص على إعادة استخدام الدالة first_letter التي عرّفتها في الخطوة السابقة.

initial("Robert")
// -> "R."

3. تقسيم الاسم الكامل إلى الاسم الأول واسم العائلة

نفّذ الدالة initials. يجب أن تأخذ اسمًا كاملًا يتكون من اسم أول واسم عائلة يفصل بينهما فراغ، وتُرجع الأحرف الأولى. واحرص على إعادة استخدام الدالة initial التي عرّفتها في الخطوة السابقة.

initials("Lance Green")
// -> "L. G."

4. وضع الأحرف الأولى داخل القلب

نفّذ الدالة pair. يجب أن تأخذ اسمين كاملين وتُرجع الأحرف الأولى داخل قلب من فن ASCII. واحرص على إعادة استخدام الدالة initials التي عرّفتها في الخطوة السابقة.

pair("Blake Miller", "Riley Lewis")
// -> "
//      ******       ******
//    **      **   **      **
//  **         ** **         **
// **            *            **
// **                         **
// **     B. M.  +  R. L.     **
//  **                       **
//    **                   **
//      **               **
//        **           **
//          **       **
//            **   **
//              ***
//               *
// "
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Gleam Exercism

مستعد لبدء حبيب الثانوية؟

سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.