يُستخدم تعبير let لإنشاء نطاق محلي، وهو مفيد في بعض الحالات:
يمكنك فعل معظم الأشياء داخل تعبير let، بما في ذلك تفكيك البنية (مزيد من التفاصيل حول هذا في تمارين لاحقة)، لكن ليس من الممكن تعريف نوع مخصص جديد أو اسم نوع بديل جديد.
let
cube x = x * x * x
in
cube a + cube b + cube c
beginWithPattern : Size -> Padding -> Pattern -> GameOfLife
beginWithPattern minimumSize padding pattern =
let
size = calculateSize minimumSize padding pattern
center = Size.center size
centeredPattern = Pattern.centerAt center pattern
dimensions = { width = size, height = size }
deadCells = Matrix.create dimensions Dead
in
GameOfLife (bringPatternToLife deadCells centeredPattern)
لقد حصلت على كتاب طبخ جديد بمناسبة عيد ميلادك، وتريد أن تعرف ما إذا كانت وصفة اللازانيا فيه أفضل من كتاب الطبخ المفضل لديك حاليًا. في هذا التمرين ستكتب بعض الكود لمساعدتك في طهي اللازانيا من كتاب الطبخ الجديد.
ما زالت رفيقتك في السكن مشغولة في المكتب، وتريد أن تعرف متى ستكون اللازانيا جاهزة، حتى تتأكد من عودتها في الوقت المناسب.
أنشئ دالة لحساب الوقت الذي ستكون فيه اللازانيا جاهزة. ولجعل الكود بسيطًا ومعبّرًا، استخدم تعبير let.
عرّف دالة remainingTimeInMinutes التي تأخذ معاملين ويكون جسمها تعبير let. المعامل الأول هو عدد طبقات اللازانيا، والمعامل الثاني هو عدد الدقائق منذ أن بدأت الطهي.
عرّف expectedMinutesInOven (في جزء let من تعبير let) للتحقق من عدد الدقائق التي ينبغي أن تبقى فيها اللازانيا في الفرن. وفقًا لكتاب الطبخ، فإن زمن الفرن المتوقع بالدقائق هو 40:
expectedMinutesInOven
--> 40
عرّف preparationTimeInMinutes (في جزء let من تعبير let) التي تأخذ عدد طبقات اللازانيا كمعامل وتُرجع عدد الدقائق اللازمة لتحضير اللازانيا، بافتراض أن كل طبقة تستغرق دقيقتين للتحضير.
preparationTimeInMinutes 3
--> 6
أرجِع عدد الدقائق المتبقية حتى تكتمل اللازانيا (في جزء in من تعبير let)، وهو مجموع preparationTimeInMinutes وexpectedMinutesInOven بعد طرح عدد الدقائق منذ أن بدأت الطهي.
remainingTimeInMinutes 3 10
--> 6 + 40 - 10 = 36
سجّل في Exercism لتتعلّم وتتقن Elm عبر 28 مفهومًا110 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.