2016-12-14 4 views
0

J'essaie de vérifier si mon jeu de caractères dans elm contient uniquement des caractères valides. Si un char est trouvé invalide, je retourne ces caractères, séparés par une virgule. Ce que j'ai actuellement essaie de convertir la chaîne en une liste de caractères, puis cette liste en un ensemble de caractères. Puis diffs l'ensemble avec un ensemble de caractères valides, ne sachant pas où aller après cela, je n'ai pas écrit beaucoup dans Elm avant. Si aucun diffs n'est trouvé, ne renvoyez rien.Vérifiez les différences de deux ensembles dans Elm

validChars : Set.Set Char 
validChars = 
Set.fromList <| String.toList " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 


validString : String -> Maybe String 
validString x = 
let 
    list = 
    String.toList x 
    set1 = 
    Set.fromList list 
    diffs= 
    Set.diff set1 validChars 

    if Set.isEmpty diffs == True 
    Nothing 

L'instruction if ne fonctionne pas dans Elms compilateur en ligne, il dit qu'il cherche « dans »

Répondre

4

Votre code a quelques mauvaises choses avec elle, voici une version qui compile.

import Set 

validChars : Set.Set Char 
validChars = Set.fromList <| String.toList " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 


validString : String -> Maybe String 
validString string = 
    let 
    diff = 
     Set.diff validChars <| Set.fromList <| String.toList string 
    in 
    if not <| Set.isEmpty diff then 
     Just string 
    else 
     Nothing 

Au fond quand il a dit qu'il cherchait in, il n'a pas eu tort, in est une partie nécessaire d'une fonction lorsque vous utilisez let déclarations.