Frage

In JavaScript können Sie dies tun:

var a = null;
var b = "I'm a value";
var c = null;
var result = a || b || c;

Und ‚Ergebnis‘ wird den Wert von ‚b‘, weil JavaScript Kurzschlüsse des ‚oder‘ Operator erhalten.

Ich mag eine einzeilige Idiom dies in Coldfusion zu tun, und das Beste, was ich mit oben kommen kann ist:

<cfif LEN(c) GT 0><cfset result=c></cfif>
<cfif LEN(b) GT 0><cfset result=b></cfif>
<cfif LEN(a) GT 0><cfset result=a></cfif>

Kann jemand tun besser als das?

War es hilfreich?

Lösung

Coldfusion keine NULL-Werte haben.

Ihr Beispiel die Wahl stützt, an dem Artikel ist ein leerer String.

Wenn das ist, was Sie nach, und alle anderen Werte sind einfache Werte, Sie können dies tun:

<cfset result = ListFirst( "#a#,#b#,#c#" )/>

(Was funktioniert, weil die Standard-Listenfunktionen leere Elemente ignorieren.)

Andere Tipps

. Hinweis: andere CFML Motoren unterstützen nulls

Wenn wir wirklich mit NULL-Werte (und nicht leere Strings) zu tun haben, hier ist eine Funktion, die für Railo und OpenBlueDragon funktioniert:

<cffunction name="FirstNotNull" returntype="any" output="false">
    <cfset var i = 0/>
    <cfloop index="i" from="1" to="#ArrayLen(Arguments)#">
        <cfif NOT isNull(Arguments[i]) >
            <cfreturn Arguments[i] />
        </cfif>
    </cfloop>
</cffunction>

Dann verwenden die Funktion ist so einfach wie:

<cfset result = FirstNotNull( a , b , c ) />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top