type alias Model =
{ dieFace : Int
}
init : (Model, Cmd Msg)
init =
(Model 1, Cmd.none)
なぜ整数1
がモデルに渡されるのですか?Model 1
?Elm:このinitはどのように機能しますか?
タイプエイリアスにレコードが必要なようですか?
type alias Model =
{ dieFace : Int
}
init : (Model, Cmd Msg)
init =
(Model 1, Cmd.none)
なぜ整数1
がモデルに渡されるのですか?Model 1
?Elm:このinitはどのように機能しますか?
タイプエイリアスにレコードが必要なようですか?
Elmに説明されていない魔法はあまりありませんが、1ビットは型と型のエイリアスコンストラクタです。型(エイリアス)を作成するたびに、自由にコンストラクタ関数が得られます。だから、あなたの例を使用して、
type alias Model =
{ dieFace : Int
}
あなたは(やや奇妙に見える)コンストラクタ関数を無料で
Model : Int -> Model
を与えます。レコードにこのようなエントリを追加すると、
type alias Model =
{ dieFace : Int
, somethingElse : String
}
コンストラクタ関数はより多くの引数をとります。
Model : Int -> String -> Model
これらの順序は、レコードエントリと同じ順序なので、あなたがあなたのタイプの別名の順序を変更する場合は、コンストラクタ関数への引数の順序を変更する必要があります。
ユニオンタイプも同様に動作します。
type Shape
= Circle Int
| Square Int Int
は静かにコンストラクタを作成します。
Circle: Int -> Shape
Square : Int -> Int -> Shape
Model 1
位置レコードコンストラクタとして「モデル」が使用されます。これは、他の例{dieFace = 1}
ここ
に等しい:
type alias Rcd =
{ first : String
, second : Int
}
RCDは、2つの方法で構築することができる
:
Rcd "some string" 4
{ first = "some string" , second = 4}
前者変異体は単に速記であり、多くの場合、初期化のために使用レコードの。
すばらしい答え。ありがとう。 – Rich