Lisp-wenn nicht null -
Ich bin so sorry für diese Frage aber ich versuche zu tun, eine einfache if
- Anweisung, die prüft, ob eine variable ist nil
oder nicht.
(defun test (input)
(let ((testvar (first input)))
(if (not nil testvar)
(do this)
(do that))))
Kann jemand erklären, die richtige syntax für mich?
Nur
(if (not testvar) ...)
. Oder setzen Sie den true-Zweig der ersten und tun (if testvar ...)
.InformationsquelleAutor JT93 | 2016-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit
nil
ist äquivalent zu den booleschen Wertfalse
gibt es keine Notwendigkeit zu vergleichen, um es explizit.Einem einfachen
wird die Arbeit machen. Sie müssen nur
not
wenn Sie prüfen wollen, für das Gegenteil, wenn Sie z.B. überprüfen möchten, ob eine variable nichtnil
:Abgesehen davon, es ist auch eine Prädikat-Funktion, die aufgerufen wird
null
, die Sie verwenden können. Es ist im Grunde bedeutete für die überprüfung, ob eine gegebene Liste leer ist, aber da die leere Liste entsprichtnil
ist, wird es funktionieren (wie die Beispiele auf der verlinkten Seite darauf hin):Sowieso, das ist im Grunde nur verschiebt sich das problem eine Ebene nach oben 😉
InformationsquelleAutor Golo Roden
Wollen Sie überprüfen, ob die variable null ist, oder wenn es nicht null?
Nicht null:
(if v ... ...)
Nil:
(if (not v) ... ...)
Gibt es (in der CL) viele Varianten, die sind alle logisch das gleiche, aber kann darauf hindeuten, Vorsatz besser:
(if (null v) ... ...)
wenn der gleiche wie der zweite Fall vor, aber vielleicht zeigen Sie dem Leser, Sie sind auf der Suche nach `()‘ statt der logischen Falschheit (also eine leere Liste). Und es gibt viele andere Variationen.InformationsquelleAutor tfb
jkiiski hatte Recht:
Nur (wenn (nicht testvar) ...). Oder setzen Sie den true-Zweig der ersten und tun (wenn testvar ...)
(if testvar ...)
und(if (not testvar) ...)
sind der Weg zu gehen, meiner Meinung nach. Wenn testvar ist eine andere Art von Wert, der möglicherweise nur zufällig null ist, dann könnten Sie(if (not (null testvar)) ...)
und(if (null testvar) ..)
. Sollte der compiler wahrscheinlich optimieren Sie Sie, das gleiche zu sein, aber es kann machen den code leichter zu Lesen für jemand anderes.InformationsquelleAutor JT93