質問

JavaScriptでは、次のことができます。

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

また、JavaScriptは「or」演算子を短絡させるため、「result」は「b」の値を取得します。

ColdFusionでこれを行うための1行のイディオムが必要であり、私が思いつく最高のものは次のとおりです。

<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>

誰よりもこれ以上良いことはできますか?

役に立ちましたか?

解決

ColdFusionにはnullはありません。

あなたの例は、どのアイテムが空の文字列であるかの選択に基づいています。

それが目的であり、他のすべての値が単純な値である場合、これを行うことができます:

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

(標準のリスト関数は空の要素を無視するため機能します。)

他のヒント

注:他のCFMLエンジンはnullをサポートしています。

空文字列ではなくnullを実際に処理している場合、以下はRailoおよびOpenBlueDragonで機能する関数です。

<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>

関数を使用するには、次のように簡単です:

<cfset result = FirstNotNull( a , b , c ) />
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top