不透

不透明型 の Gleam

4個の演習

不透明型について

Gleamの不透明型は、その型を定義したモジュールだけが、その型の値を作成したりパターンマッチしたりできるカスタム型です。特定の使い方だけを想定した型を作りたいときに便利です。

不透明型は、opaqueキーワードを使って定義します。

pub opaque type PositiveInt {
  PositiveInt(inner: Int)
}

このPositiveInt型は、整数が欲しいけれど、その値が0以上でなければならない場面で使います。通常のGleamのIntは負の値も取れるため、この用途には使えません。

この型を定義しているモジュールでは、内側の整数値を取り出す関数と、PositiveInt型を作る関数を定義できます。後者は、値が正でなければエラーを返します。

pub fn from_int(i: Int) -> Result(PositiveInt, String) {
  case i {
    _ if i < 0 -> Error("Value must be positive")
    _ -> Ok(PositiveInt(i))
  }
}

pub fn to_int(i: PositiveInt) -> Int {
  i.inner
}

このAPIがあれば、他のモジュールが負の値を持つPositiveIntを作成することはできません。そのため、PositiveIntを受け取る関数は、その値が正であると確信できます。

GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

不透明型を学習する

練習はロックされています

不透明型を練習するには、あと1個の演習のロックを解除してください