ユニット型
空のタプル()
はElmではユニット型と呼ばれます。一般的なので説明が必要でしょう。
a
で表される型変数を持つ型エイリアスを考えてみましょう:
type alias Message a =
{ code : String
, body : a
}
このように body
がString
であるMessage
を期待する関数を作ることができます:
readMessage : Message String -> String
readMessage message =
...
または body
が整数のリストであるようなMessage
を期待する関数も書けます:
readMessage : Message (List Int) -> String
readMessage message =
...
しかし、bodyに値を必要としない関数はどうでしょう?その場合、bodyが空であることを示すために、ユニット型を使用します。
readMessage : Message () -> String
readMessage message =
...
この関数は、空のbodyを持つ Message
をとります。これは任意の値ではなく、空の値と同じです。
このように、ユニット型は通常、空の値の代わりとして使用されます。
タスク
Task
型でのユニット型の使用例を見てみましょう。Task
を使う場合、ユニット型を頻繁に使用します。
典型的なタスクはエラーと結果を持ちます。
Task error result
- エラーを安全に無視できるタスクが必要な場合があります:
Task () result
- あるいは、結果を無視する場合:
Task error ()
- またはその両方を無視する場合:
Task () ()