في Gleam تُعرَّف الدوال باستخدام صيغة pub fn.
pub fn add(x: Int, y: Int) -> Int {
x + y
}
تأخذ هذه الدالة وسيطين، كلاهما من النوع Int، وتُرجع قيمة من النوع Int. لا توجد كلمة مفتاحية return في Gleam، فقيمة آخر تعبير في الدالة تُرجع دائمًا ضمنيًا.
توصيفات النوع للوسائط ونوع الإرجاع اختيارية، وسيتحقق Gleam دائمًا من أنواع الكود بالكامل. عادةً ما يضيف مبرمجو Gleam توصيفات النوع إلى دوالهم للتوضيح، لكن يمكنك حذفها إن أردت.
pub fn add(x, y) {
x + y
}
يمكن استدعاء الدالة باستخدام صيغة function_name(argument1, argument2).
pub fn double(x: Int) -> Int {
// Call the add function defined above
add(x, x)
}
في Gleam تُعرَّف المتغيرات باستخدام صيغة let name = expression.
pub fn main() {
let count = 1
}
يمكن الإعلان عن المتغيرات مع توصيفات النوع. وكما هو الحال مع وسائط الدوال، فإن هذه التوصيفات اختيارية، رغم أن معظم مبرمجي Gleam يحذفون توصيفات النوع للمتغيرات للاختصار.
pub fn main() {
let count: Int = 1
}
في Gleam تُكتب السلاسل النصية باستخدام علامات الاقتباس المزدوجة.
pub fn greeting() {
"Hello, world!"
}
يمكن استخدام التعليقات لترك ملاحظات لمبرمجين آخرين يقرؤون الكود المصدري. التعليقات في Gleam أسطر مفردة تسبقها //.
pub fn main() {
// This is a comment
let x = 1
}
في هذا التمرين ستكتب بعض الكود لمساعدتك على طهي لازانيا رائعة من كتاب الطهي المفضل لديك.
لديك خمس مهام، كلها متعلقة بالوقت المستغرق في طهي اللازانيا.
عرّف دالة expected_minutes_in_oven التي لا تأخذ أي وسائط وتُرجع عدد الدقائق التي ينبغي أن تبقى فيها اللازانيا في الفرن. وفقًا لكتاب الطهي، وقت الفرن المتوقع بالدقائق هو 40:
expected_minutes_in_oven()
// -> 40
عرّف دالة remaining_minutes_in_oven التي تأخذ عدد الدقائق الفعلية التي قضتها اللازانيا في الفرن كوسيط، وتُرجع عدد الدقائق التي لا يزال يتعين على اللازانيا أن تبقى فيها في الفرن، بناءً على وقت الفرن المتوقع بالدقائق من المهمة السابقة.
remaining_minutes_in_oven(30)
// -> 10
عرّف دالة preparation_time_in_minutes التي تأخذ عدد الطبقات التي أضفتها إلى اللازانيا كوسيط، وتُرجع عدد الدقائق التي استغرقتها في تحضير اللازانيا، بافتراض أن كل طبقة تستغرق منك 2 دقيقة للتحضير.
preparation_time_in_minutes(2)
// -> 4
عرّف دالة total_time_in_minutes التي تأخذ وسيطين: الوسيط الأول هو عدد الطبقات التي أضفتها إلى اللازانيا، والوسيط الثاني هو عدد الدقائق التي قضتها اللازانيا في الفرن. ينبغي أن تُرجع الدالة إجمالي عدد الدقائق التي عملتها في طهي اللازانيا، وهو مجموع وقت التحضير بالدقائق، والوقت بالدقائق الذي قضته اللازانيا في الفرن في تلك اللحظة.
total_time_in_minutes(3, 10)
// -> 16
عرّف دالة alarm التي لا تأخذ أي وسائط وتُرجع رسالة تشير إلى أن اللازانيا جاهزة للأكل.
alarm()
// -> "Ding!"
سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.