Lisp si non nul
Je suis tellement désolée d'avoir à poser cette question mais je vais essayer de faire un simple if
déclaration qui vérifie si une variable est nil
ou pas.
(defun test (input)
(let ((testvar (first input)))
(if (not nil testvar)
(do this)
(do that))))
Quelqu'un pourrait-il expliquer la syntaxe correcte pour moi?
Juste
(if (not testvar) ...)
. Ou mettre la vraie direction de la première et ne (if testvar ...)
.OriginalL'auteur JT93 | 2016-04-08
Vous devez vous connecter pour publier un commentaire.
Depuis
nil
est équivalent à la valeur booléennefalse
, il n'est pas nécessaire de le comparer à ce qu'il soit explicitement.Un simple
va faire le travail. Vous avez seulement besoin
not
si vous souhaitez vérifier l'opposé, par exemple, si vous voulez vérifier qu'une variable n'est pasnil
:En dehors de cela, il ya aussi une fonction de prédicat appelé
null
que vous pourriez utiliser. Il a surtout pour but de vérifier si une liste est vide, mais depuis la liste vide est équivalent ànil
, il va travailler (comme le montrent les exemples sur la page liée point):De toute façon, ce fond que se déplace le problème une couche 😉
OriginalL'auteur Golo Roden
Voulez-vous vérifier si la variable est nulle ou si elle n'est pas nulle?
Pour ne pas nul:
(if v ... ...)
Pour néant:
(if (not v) ... ...)
Il y a (en CL) de nombreuses variantes qui sont tout logiquement le même, mais peut indiquer l'intention de mieux:
(if (null v) ... ...)
si le même que le deuxième cas ci-dessus, mais peut indiquer au lecteur que vous êtes à la recherche pour les "() " au lieu de la logique de la fausseté (c'est à dire une liste vide). Et il y a beaucoup d'autres variations.OriginalL'auteur tfb
jkiiski a droite:
Juste (si (pas testvar) ...). Ou mettre la vraie direction de la première et de la faire (si testvar ...)
(if testvar ...)
et(if (not testvar) ...)
sont la voie à suivre, à mon avis. Si testvar est un autre type de valeur qui peut seulement arriver à zéro, alors vous pourriez utiliser(if (not (null testvar)) ...)
et(if (null testvar) ..)
. Le compilateur doit probablement de les optimiser pour être le même, mais il peut rendre le code plus facile à lire pour quelqu'un d'autre.OriginalL'auteur JT93