0
votes

Elm 0.19 Peut-être.WithDeFault

J'ai lu la documentation, mais je ne comprends toujours pas comment peut-être. En ce qui concerne mon code. Parce qu'à partir d'une chaîne.tois, je reçois peut-être INT, je ne peux pas utiliser un signe + pour ajouter les valeurs que j'essaie de convertir en entiers. C'est elm 0,19. Comment puis-je résoudre ce problème? XXX


0 commentaires

4 Réponses :


1
votes

Vous avez besoin d'une chaîne avec texte code> mais vos onclicks peuvent fonctionner avec des messages qui prennent des INTS. I.e.

button [ onClick (AddNum 7)] [ text "7" ]


2 commentaires

J'ai changé les boutons pour travailler avec INTS et mon code addnum à ceci: {Modèle | curnum = string.toint ((string.fromint modèle.curnum) ++ (string.fromint numéro))} Mais je dois toujours convertir un int vers une chaîne. Même erreur


J'utilise la fonction addnum pour créer un numéro, pas ajouter un



0
votes

J'ai corrigé l'erreur en créant une fonction qui convertit peut-être INT -> INT:

checkInt : Maybe Int -> Int
checkInt x = case x of
    Just y -> y
    Nothing -> 0


0 commentaires

2
votes
Add ->
    let
        cur : Int
        cur =
            Maybe.withDefault 0 (String.toInt model.curNum)

        main : Int
        main =
            Maybe.withDefault 0 (String.toInt model.mainNum)
     in
     { model | curNum = String.fromInt (cur + main) }

0 commentaires

1
votes

Concernant votre question:

  1. string.fromint retourne peut-être int , cela signifie que la valeur peut être soit juste int ou rien
  2. Vous ne pouvez pas simplement ajouter E.G. juste 1 et rien ensemble ou même juste 1 et juste 2
  3. Vous devez extraire le numéro de juste 1 ou spécifier la valeur par défaut si c'est rien (par exemple 0).
  4. C'est là que peut-être.WithDeFault est utile. Il peut extraire int à partir de tout peut-être int (Peu importe si c'est rien ou juste ). Il faut 2 paramètres:

    • est la valeur par défaut utilisée lorsque le deuxième paramètre est rien
    • second est le peut-être valeur

      Donc, dans votre code, vous pouvez l'utiliser comme ceci: xxx

      après avoir dit tout cela, vous pouvez simplement enregistrer tous les problèmes en utilisant int s dans votre modèle et string.fromint dans vos vues.


0 commentaires