2016-06-07 39 views
1

我剛剛開始接觸榆樹,所以是很好:)設定值

"Random" example of the official Elm Guide模型似乎與值1這樣的初始化:

type alias Model = 
    { dieFace : Int 
    } 


init : (Model, Cmd Msg) 
init = 
(Model 1, Cmd.none) 

我對此的理解是代碼

Model 1 

設置記錄中dieFace屬性的值。這是正確的,如果是這樣的話:設置記錄屬性的這種奇怪的語法是什麼?我本來期望沿

{ model | dieFace = 1 } 

回答

5

Model線的東西是它有一個名爲dieFace單個int值的記錄是類型別名。

有創建該類型的值幾個方面:

Model 1 -- treats Model as a function with a single parameter 

{ dieFace = 1 } -- creates a record that happens to coincide with the Model alias 

{ model | dieFace = 1 }看到奇怪的語法速記用於創建基於關閉現有記錄值的新值,但是改變一個或多個字段。它也許沒有太大的意義,當你的記錄類型有單場讓我們創建一個任意的例子:

type alias ColoredDie = { dieFace: Int, color: String } 

您可以在Elm REPL玩耍,也許這將有助於它有意義:

> blue3 = ColoredDie 3 "blue" 
{ dieFace = 3, color = "blue" } : Repl.ColoredDie 
> red3 = { blue3 | color = "red" } 
{ dieFace = 3, color = "red" } : { dieFace : Int, color : String } 
> red4 = { red3 | dieFace = 4 } 
{ dieFace = 4, color = "red" } : { color : String, dieFace : number } 
> green6 = { red4 | color = "green", dieFace = 6 } 
{ dieFace = 6, color = "green" } : { color : String, dieFace : number } 

您可以read up on Elm's record syntax here

+0

謝謝乍得,最好的答案我在很長一段時間,很快。 – swelet