Проверьте значение в Dict

Пытаясь проверить ценность фруктов

fruit =
  Dict.fromList
      [ ( 1, { fruitIsGood = False } )
      , ( 2, { fruitIsGood = False } )
      , ( 3, { fruitIsGood = True } )
      ]

whichFruitIsGood : Dict.Dict number { fruitIsGood : Bool } -> String
whichFruitIsGood fruit =
    case get 0 fruit of
        Nothing ->
            Debug.crash "nothing found"

        Just fruit ->
            if fruit.fruitIsGood == True then
                "Apple"
            else
                "I hate Fruit"

Я не знаю, как добраться до хорошей фруктовой опоры или как там ее в Элме.

1 ответ

Решение

Первый, Debug.crash "nothing found" не предоставит вам никакой полезной функциональности, как насчет возвращения nothing found Строка вместо.

Тогда вам просто нужно исправить ошибки, на которые указывает компилятор. Они в основном о переменных, которые определяются несколько раз. Давайте переименуем вашу первую функцию в fruits:

fruits =
  Dict.fromList
      [ ( 1, { fruitIsGood = False } )
      , ( 2, { fruitIsGood = False } )
      , ( 3, { fruitIsGood = True } )
      ]

И переменная во второй функции:

whichFruitIsGood : Dict.Dict number { fruitIsGood : Bool } -> String
whichFruitIsGood fruit =
    case get 3 fruit of
        Nothing ->
            "nothing found"

        Just foundFruit ->
            if foundFruit.fruitIsGood == True then
                "Apple"
            else
                "I hate Fruit"

Тогда ваш код скомпилируется и вернется nothing found в следствии.

Вот небольшой, немного модифицированный пример приложения ellie, в котором показан код в действии.

Другие вопросы по тегам