2016-07-10 13 views
3

Elm checkboxes exampleで遊ぶ。私は別の関数にviewどのようにして、タグを含まないユニオンタイプの関数に渡すことができますか?

, label [] 
    [ br [] [] 
    , input [ type' "checkbox", checked model.underline, onCheck Underline ] [] 
    , text "underline" 
    ] 

に次repetativeコードを移動し、それを3回使用しようとしています。これまでのところ私は...

makeLabel : String -> Bool -> Msg -> Html Msg 
makeLabel caption bool msg = 
    label [] 
    [ br [] [] 
    , input [ type' "checkbox", checked bool, onCheck msg ] [] 
    , text caption 
    ] 

を持っていると私は

makeLabel "underline" model.underline Underline 

のようにそれを使用しますが、その後、私は

Function `makeLabel` is expecting the 3rd argument to be: 

Msg 

But it is: 

Bool -> Msg 

次のエラーを受け取るどのように私は私のmakeLabelが正しい機能渡すんユーザーがチェックボックスを変更したときに実行するアクション?

type Msg 
= Red Bool 
| Underline Bool 
| Bold Bool 

私はタグ(下線ブール値)を含めずに機能union型(下線)に渡すことができる方法を理解していない

答えて

4

問題ではなく、コードよりも、あなたのタイプの署名です。これを試してみてください:

makeLabel : String -> Bool -> (Bool -> Msg) -> Html Msg 
+0

どうもありがとうございました。今私はそれを得る。共用体タグに引数がある場合、それは一種のコンストラクタ、関数になります。そのため、引数なしのunion型の型シグネチャは、 'Underline:Bool - > Msg'です。 – snwclone

+0

はい、way型のコンストラクタも関数になるのは、少数のelmの 'magic'アイテムの中で考えられます。あなたが感じている場合は、質問に答えて印を付けることができますか? –

関連する問題