泛型

泛型 属于 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 个练习即可练习 泛型