千層麵

千層麵

學習練習

簡介

基礎

函式

在 Gleam 中,函式是用pub fn語法定義的。

pub fn add(x: Int, y: Int) -> Int {
  x + y
}

這個函式接受兩個引數,兩者的型別都是 Int,並回傳型別為 Int 的值。Gleam 中沒有 return 關鍵字,函式中最後一個運算式的值一律會_隱式回傳_。

引數的型別標註與回傳型別都是選用的,而 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
}

說明

在這項練習中,你將寫一些程式碼,幫助你依照最愛的食譜烤出完美的千層麵。

你有 5 個任務,全都和烤千層麵所花費的時間有關。

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

定義expected_minutes_in_oven函式,它不接受任何引數,並回傳千層麵應該在烤箱中待幾分鐘。根據食譜,預期的烤箱時間是 40 分鐘:

expected_minutes_in_oven()
// -> 40

2. 計算剩餘的烤箱時間(分鐘)

定義remaining_minutes_in_oven函式,它接受千層麵已經在烤箱中的實際分鐘數作為引數,並根據前一個任務中預期的烤箱時間,回傳千層麵還需要在烤箱中待幾分鐘。

remaining_minutes_in_oven(30)
// -> 10

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

定義preparation_time_in_minutes函式,它接受你加到千層麵中的層數作為引數,並回傳你準備千層麵所花的分鐘數,假設每一層需要 2 分鐘準備。

preparation_time_in_minutes(2)
// -> 4

4. 計算總工作時間(分鐘)

定義total_time_in_minutes函式,它接受兩個引數:第一個引數是你加到千層麵中的層數,第二個引數是千層麵已經在烤箱中的分鐘數。這個函式應該回傳你烹調千層麵總共花了幾分鐘,也就是準備時間的分鐘數,加上千層麵目前在烤箱中待的分鐘數。

total_time_in_minutes(3, 10)
// -> 16

5. 建立千層麵烤好的通知

定義alarm函式,它不接受任何引數,並回傳一則表示千層麵可以吃了的訊息。

alarm()
// -> "Ding!"
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Gleam Exercism

準備好開始 千層麵 了嗎?

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