J'ai ce code qui vérifie la chaîne vide ou nulle. Cela fonctionne dans les tests.
eitherStringEmpty= (email, password) ->
emailEmpty = not email? or email is ''
passwordEmpty = not password? or password is ''
eitherEmpty = emailEmpty || passwordEmpty
test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"
Ce que je me demande, c'est s'il existe un meilleur moyen que not email? or email is ''
. Puis-je faire l'équivalent de C # string.IsNullOrEmpty(arg)
dans CoffeeScript avec un seul appel? Je pourrais toujours définir une fonction pour cela (comme je l'ai fait) mais je me demande s'il y a quelque chose dans la langue qui me manque.
coffeescript
jcollum
la source
la source
!!
version, qui est un moyen courant de convertir essentiellement en booléen. Si cela compte, c'est presque certainement plus rapide que de définir une fonction comme l'a suggéré Jeremy.Ce n'est pas tout à fait équivalent, mais
email?.length
ne sera vrai que s'ilemail
est non nul et a une.length
propriété non nulle . Si vousnot
utilisez cette valeur, le résultat doit se comporter comme vous le souhaitez pour les chaînes et les tableaux.Si
email
estnull
ou n'a pas de.length
, alorsemail?.length
évaluera ànull
, ce qui est faux. Si elle a un.length
alors cette valeur évaluera à sa longueur, qui sera fausse si elle est vide.Votre fonction pourrait être implémentée comme:
la source
C'est un cas où la «vérité» est utile. Vous n'avez même pas besoin de définir une fonction pour cela:
Pourquoi ça marche?
la source
.trim()
la valeur dans le cadre de votre logique de validation. La réponse concerne davantage la syntaxe CS.Vérifiez d'abord si l'email n'est pas indéfini et non nul avec l'opérateur existentiel, puis si vous savez qu'il existe, la
and email
partie ne retournera false que si la chaîne d'email est vide.la source
Vous pouvez utiliser l'opération coffeescript ou =
la source
Si vous avez besoin de vérifier que le contenu est une chaîne, non null et non un tableau, utilisez une simple comparaison de typeof:
la source
typeof email isnt "string"
renvoie false pour les deux''
et'a'
Voici un jsfiddle démontrant un moyen très simple de le faire.
Fondamentalement, vous faites simplement cela est javascript:
En résumé:
J'espère que cela aide quelqu'un :)
la source
Je pense que le point d'interrogation est le moyen le plus simple d'appeler une fonction sur une chose si la chose existe.
par exemple
vous voulez obtenir la couleur, mais seulement si la voiture existe ...
coffeescript:
se traduit par javascript:
il s'appelle l'opérateur existentiel http://coffeescript.org/documentation/docs/grammar.html#section-63
la source
Je suis à peu près sûr que la réponse de @thejh était assez bonne pour vérifier la chaîne vide MAIS, je pense que nous devons souvent vérifier que "Existe-t-il?" et ensuite nous devons vérifier «Est-il vide? inclure une chaîne, un tableau et un objet '
C'est le moyen le plus court pour CoffeeScript de le faire.
Si nous gardons cet ordre des questions, cela serait vérifié par cet ordre 1. existe-t-il? 2. pas de chaîne vide? 3. objet pas vide?
il n'y avait donc aucun problème pour toutes les variables, même si elles n'existaient pas.
la source
Sur la base de cette réponse concernant la vérification si une variable a une
truthy
valeur ou non, vous n'avez besoin que d'une ligne:et vous pouvez l'essayer par vous-même sur cette console Coffeescript en ligne
la source
Au lieu de la réponse acceptée,
passwordNotEmpty = !!password
vous pouvez utiliserIl donne le même résultat (la différence uniquement dans la syntaxe).
Dans la première colonne se trouve une valeur, dans la seconde le résultat de
if value
:la source