學習軌道
/
Elm
Elm
/
練習
/
盧西恩的美味千層麵
盧西恩的美味千層麵

盧西恩的美味千層麵

學習練習

簡介

基礎 1

常數與函式

常數值以 name = expression 定義。在 Elm 中,除了定義之外,一切皆為運算式。

five = 5

six = 3 + 3

函式以 name parameters... = expression 定義,參數之間僅以空白分隔。

add number1 number2 = number1 + number2

呼叫函式本身也是一種運算式,做法是指定函式名稱,並為函式的每個參數傳入對應的引數,彼此以空白分隔,就跟定義函式時一樣。

five = add 2 3

括號可以用來指定運算式的求值順序。

six = add 2 (1 * 4)

twelve = add 2 1 * 4

縮排與有意義的空白

Elm 不使用大括號、小括號或分號這類語法標記來界定程式碼的範圍,而是改用空白與縮排。

  • 模組、匯入與頂層函式定義都必須從最左邊開始。
  • 如果一個運算式被拆成多行,屬於該運算式的程式碼必須縮排在該運算式之下,且至少縮排一個空白。
  • 運算式中被歸為同一組的部分,應該使用相同數量的空白縮排。
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://elmprogramming.com/indentation.html

模組

Elm 中的每個檔案都是一個模組,而且必須在所有其他程式碼之前包含 module 敘述。模組名稱必須與檔案名稱相符,因此模組 Calculator 必須放在 Calculator.elm 這個檔案裡。模組中定義的任何東西,其作用域都是該模組私有的,除非列在 exposing 中,否則無法從這個模組外部存取。

-- Define the Calculator module, and expose the `add` function
module Calculator exposing (add)

six = 3 + 3

add number1 number2 = number1 + number2
-- Define the Calculator module, and expose everything within: `six` and `add`
module Calculator exposing (..)

six = 3 + 3

add number1 number2 = number1 + number2

https://elm-lang.org/docs/syntax#modules

註解

註解是 Elm 檔案中不會被當成程式碼解讀的文字,主要是給你自己和其他程式設計師閱讀的。單行註解有一種輕量的語法,以雙破折號為基礎。多行註解則可以用 {- 與 -} 這對開頭與結尾的分隔符號來寫。

-- a single line comment
-- another single line comment

{- a multiline comment
   spawning multiple lines
-}

格式化

這裡有一份風格指南,而 elm-format 可以用來自動格式化程式碼。

說明

在這個練習中,你要寫一些程式碼,幫助你依照最愛的食譜做出美味的千層麵。

你有三個任務,全都和烹調千層麵所花費的時間有關喔。

1. 定義預期的烤箱時間(分鐘)

定義expectedMinutesInOven來計算千層麵應該在烤箱中待幾分鐘。根據食譜,預期的烤箱時間是 40 分鐘:

expectedMinutesInOven
    --> 40

2. 計算準備時間(分鐘)

定義preparationTimeInMinutes,它會接收千層麵的層數作為參數,並回傳準備千層麵需要幾分鐘,假設每一層需要 2 分鐘準備。

preparationTimeInMinutes 3
    --> 6

3. 計算經過的時間(分鐘)

定義elapsedTimeInMinutes函式,它接收兩個參數:第一個參數是千層麵的層數,第二個參數是千層麵已經在烤箱中待了幾分鐘。這個函式應該回傳你烹調千層麵所花的時間(分鐘),也就是準備時間(分鐘)加上當下千層麵已經待在烤箱中的時間(分鐘)的總和。

elapsedTimeInMinutes 3 20
    --> 26
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Elm Exercism

準備好開始 盧西恩的美味千層麵 了嗎?

註冊 Exercism,透過 28 個概念110 個練習 和真人引導來學習並精通 Elm,全部免費。