2017-01-29 6 views
0

Я определила свою модель, чтобы быть Model = Dict Int String однако во время компиляции, я получаю number вместо Int так, что это неправильно:с помощью Int или номер в словаре Вязов

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 

и, к сожалению Elm РЕПЛ делает то же самое возвращающегося Dict number вместо Dict Int.

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

Некоторые языки, такие как Haskell разоблачить Int как, а также Integer, а также number Как я могу заставить его быть целым числом?

ответ

4

Вы могли бы предоставить соответствующий код?

Следующие компилирует и отлично работает для меня:

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

мне нужно сжать мой код вниз к SCCCE например http://sscce.org –

+2

Существенная часть вышеуказанного ответа заключается в том, что 'Модель 'определяется как псевдоним' Dict'. Убедитесь, что ваше определение модели использует ключевое слово 'alias'. В противном случае вы определяете свою Модель как единичный случай, дискредитированный союз. 'type alias Model = Dict Int String' – Adrian

Смежные вопросы