문제

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 ) />
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top