2017-01-29 3 views
0

ich mein Modell definiert Model = Dict Int String jedoch in der Kompilierung zu sein, erhalte ich number statt Int so ist es falsch:Int oder Zahl in Elm Wörterbuch mit

The 2nd argument to function `get` is causing a mismatch. 

71|    Dict.get 3 model 
          ^^^^^ 
Function `get` is expecting the 2nd argument to be: 

    Dict number v 

But it is: 

    Model 

und leider Elm repl macht das Gleiche Dict number Rückkehr anstelle von Dict Int.

> Dict.fromList [ (1, {a= 1})] 
Dict.fromList [(1,{ a = 1 })] : Dict.Dict number { a : number1 } 

Bestimmte Sprachen wie Haskell Int wie sowie Integer aussetzen sowie number Wie kann ich es erzwingen integer sein?

Antwort

4

Können Sie den entsprechenden Code bereitstellen?

Die folgenden kompiliert und funktioniert gut für mich:

import Dict exposing (Dict, fromList, get) 

type alias Model = Dict Int String 

model : Model 
model = fromList [(1, "apple"), (2, "banana"), (42, "giraffe")] 

test : Maybe String 
test = get 2 model 
+1

Ich brauche meinen Code unten auf ein SCCCE Beispiel http://sscce.org –

+2

Der wesentliche Teil der Antwort oben zu schrumpfen ist, dass die 'Modell 'ist definiert als ein' Dict'-Alias. Stellen Sie sicher, dass Ihre Modelldefinition das Schlüsselwort 'alias' verwendet. Andernfalls definieren Sie Ihr Modell als eine diskriminierte Einheit im Einzelfall. 'Typ Alias ​​Model = Dict Int String' – Adrian