泛型

泛型 在 Gleam

10 個練習

關於 泛型

當一個型別能使用_型別參數_來容納任何型別的值時,它就是_泛型型別_。

例如,這個Box型別帶有型別參數a(以小寫字母書寫)。

pub type Box(a) {
  Box(a)
}

a型別參數是任何型別的佔位符,所以Box可以搭配字串、整數或任何其他型別使用。

Box("Hello, Joe!") // The type is Box(String)

Box(42) // The type is Box(Int)

一個型別可以有多個型別參數,只要用逗號分隔即可。

pub type Pair(a, b) {
  Pair(a, b)
}

泛型函式

型別參數也可以用在函式的引數中。

這個函式接受一個型別為a的值,並將一個接受a、回傳b的函式呼叫兩次。

pub fn twice(value: a, f: fn(a) -> b) -> b {
  f(value)
  f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)
透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 泛型

練習已鎖定

再解鎖 3 個練習,就能練習 泛型