2016-06-11 13 views
3

Ich habe eine Eingabe wie folgt aus:Ulme, wie Modell zu aktualisieren, basierend auf Eingabetypnummer

input [ type' "number", onInput NewValue ] [ text <| toString model.value ]

Wie das Modell aktualisieren? Ich habe so etwas wie dies:

NewValue nb -> 
     ({ model | value = nb }, Cmd.none) 

Ich weiß nicht, ob in der Anzahl Eingangstyp der Wert ein Int oder ein String ist. ich dies auch versuchen:

NewValue nb -> 
    let 
    nb = Result.withDefault 0 (String.toInt nb) 
    in 
    ({ model | value = nb }, Cmd.none) 

mit der zweiten Version habe ich diesen Fehler:

The return type of function `withDefault` is being used in unexpected ways. 

44|   nb = Result.withDefault 0 (String.toInt nb) 
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
The function results in this type of value: 

    Int 

Which is fine, but the surrounding context wants it to be: 

    String 
+0

Ihr 2. Versuch sieht gut aus für mich. Was funktioniert nicht? – farmio

+0

Ich habe den Fehler hinzugefügt – BoumTAC

Antwort

9

Ändern Sie den Funktionsnamen auf etwas anderes nb, da sie bereits als String zugeordnet ist und Sie können nicht überschreibe es.

NewValue nb -> 
    let 
    newInt = Result.withDefault 0 (String.toInt nb) 
    in 
    ({ model | value = newInt }, Cmd.none)