Wann verwende ich ein "OR" und wann ein || in einer ColdFusion cfif-Anweisung?
Antworten
Zu viele Anzeigen?Double Pipe (sowie Double Ampersand) werden in ColdFusion seit CF8 unterstützt. Seitdem ich das gelernt habe, verwende ich immer Double Pipe/Double Ampersand anstelle von OR/AND. Der Grund, warum ich mit diesem Stil kodiere, ist, dass "OR" im Hinblick auf die durchgeführte Operation nicht vollständig beschreibend ist. Es gibt bitweises ODER, logisches ODER und logisches ODER mit Kurzschluss.
Bitweises OR: 01 | 10 = 11
Logisches ODER: buildErrorsOn(form.varA) | buildErrorsOn(form.varB)
Logisches ODER (Kurzschluss): isDefined('url.doStuff') || isDefined('url.doStuff')
In so ziemlich jeder Sprache, die Sie derzeit verwenden können (Oracle scheint eine bemerkenswerte Ausnahme zu sein), bedeutet Double Pipe immer Logical-OR mit Kurzschluss. Es ist eine präzise Notation.
Möglicherweise gibt es in CF9 eine Unterstützung, die diese Schlüsselwörter gleichwertig macht, aber ich konnte keinen Hinweis darauf finden. In Wirklichkeit ist es wahrscheinlich besser, nur das Schlüsselwort OR in CFIF zu verwenden und den || für die String-Verkettung in SQL-Abfragen zu verwenden.
Es sieht so aus, als ob || seit CF8 unterstützt wird. CF8-Dokumentation
Ich finde "oder" immer intuitiver. (Übrigens verwende ich in SQL immer "+" für die Verkettung von Zeichenfolgen - oder gibt es das nur in SQL Server?)