トラック
/
Gleam
Gleam
/
シラバス
/
ジェネリクス
ジェ

ジェネリクス の 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を返す関数を2回呼び出します。

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個の演習のロックを解除してください