ColdFusion:リストから最初の非ヌル値を選択します
-
03-07-2019 - |
質問
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 ) />
所属していません StackOverflow