ColdFusion : 목록에서 첫 번째 비 널 값을 선택하십시오.
-
03-07-2019 - |
문제
JavaScript에서는 다음을 수행 할 수 있습니다.
var a = null;
var b = "I'm a value";
var c = null;
var result = a || b || c;
JavaScript가 '또는'연산자를 단락시키기 때문에 '결과'는 'B'의 값을 얻게됩니다.
나는 한 줄의 관용구가 ColdFusion에서 이것을하기를 원하며, 내가 생각해 낼 수있는 최선은 다음과 같습니다.
<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에는 널이 없습니다.
예제는 어떤 항목이 빈 문자열인지 선택할 수 있습니다.
그것이 당신이 따르는 것이고 다른 모든 값이 간단한 값이라면 다음을 수행 할 수 있습니다.
<cfset result = ListFirst( "#a#,#b#,#c#" )/>
(표준 목록 기능이 빈 요소를 무시하기 때문에 작동합니다.)
다른 팁
참고 : 다른 CFML 엔진은 널을 지원합니다.
우리가 실제로 널을 다루고 있다면 (빈 줄이 아닌), 여기에 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