Open8
The Elm Archtecture
type
とtype alias
の違いは?
type
type
がなんなのかはわかっていない。
使われ方としてはsealed class
に似ている気がする
type.elm
type Either
= Loading
| Success { value: Int }
| Failure { message: String }
getValue : Either -> String
getValue either =
case either of
Loading -> "loading"
Success v -> "success"
Failure message -> "failure"
type alias
type alias
は型に名前をつけるもの
typeAlias.elm
type alias T = { value: Int }
typeはカスタム型の宣言に利用するみたいだ
また別名がtagged unionやADTと呼ばれていることからseald classはあながち間違っていなそう
type alias
はレコードを作ってる
typeAlias.elm
type alias T = { value : Int }
T // <function> : Int -> T
typeAliasLike.elm
record : Int -> T
record first = { value = first }
record // <fucntion> : Int -> { value : Int }
typeAlias.elm
とtypeAliasLike.elm
はほぼほぼ同じ
エラーハンドリング
型にエラー情報を逃す。Result
やMaybe
でそれを実現する
Maybe
JavaのOption
と同等のものでnull
参照をなくす
maybe.elm
type MaybeInt
= Value number
| Nothing
toInt : String -> MaybeInt
toInt string =
case String.toInt string of
Nothing -> Nothing
Just value -> Value value
Result
よく聞くEither
例外処理用の型
result.elm
type Either value error
= Just value
| Err error
Variant
value
とすることでモデルを作ることができる
#コマンドとサブスクリプション
Html msg
でHTMLエレメントからメッセージを送るように、Cmd msg
でコマンドからメッセージを送れる。
Update関数の型定義とかとか
そもそもElm
が最大限生かされる書き方ってどんなんなんだろう?
MVCを深く知ると良いのかな??
作成者以外のコメントは許可されていません