モジュールの使用
💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。
すでに見てきたように、use 構文はモジュールのメンバーをローカルスコープに持ち込みます。
例えば、次のプログラムがあるとします:
mod A {
mod B {
pub enum Color {
case Red, Green, Blue
}
pub type alias Hue = Color
pub def isWarm(c: Color): Bool =
match c {
case Color.Red => true
case Color.Green => false
case Color.Blue => false
}
}
}
このとき、以下の use はすべて意味を持ちます:
use A.B.Color
use A.B.Color.{Red, Green, Blue}
use A.B.Hue
use A.B.isWarm
さまざまな種類の use
Flix は、以下を含む複数の種類の use をサポートしています:
- 名前の修飾付き use:
use A.B.Color - 複数の名前の修飾付き use:
use A.B.Color.{Red, Green, Blue} - リネームを伴う修飾付き use:
use A.B.Color => AColor - 複数のリネームを伴う修飾付き use:
use A.B.Color.{Red => R, Green => G, Blue => B}
注意: Flix はワイルドカードをサポートしていません。
use はどこに書けるのか?
Flix では、次の 2 つの場所で use を使えます:
- モジュールの内部
- 関数の内部
例えば:
mod A {
use Chain
use Chain.Empty
use Chain.Chain
use Int32.max
pub def maxValue(c: Chain[Int32]): Int32 =
match c {
case Empty => 0
case One(x) => x
case Chain(x, y) => max(maxValue(x), maxValue(y))
}
}
これは次のように書くこともできます:
mod A {
use Chain
pub def maxValue(c: Chain[Int32]): Int32 =
use Chain.Empty;
use Chain.Chain;
use Int32.max;
match c {
case Empty => 0
case One(x) => x
case Chain(x, y) => max(maxValue(x), maxValue(y))
}
}
式の内部ではセミコロンが使われている点に注意してください。
デフォルトの use
Flix では、いくつかの組み込みコンストラクタが常にスコープ内にあります:
List.NilとList.ConsResult.OkとResult.Err