آموزش
ColdFusion ، ساختار Switch/Case
ساختار Switch/Case
يک عبارت را در برابر چندين شرط، ارزيابي مي کند و سپس کد مربوطه را اجرا مي کند.
مثلا، تکه کد زير را در نظر بگيريد :
<cfif myVar EQ 1>
One
<cfelseif myVar EQ 2>
Two
<cfelseif myVar
EQ 3>
Three
</cfif>
تکه کد بالا مقدار myVar را سه بار ارزيابي مي کند و هر بار
تست مي کند که آيا مقدار آن برابر مقدار خاصي هست يا نه. کد بالا را مي توان به
صورت بهتر مي توان نوشت :
<cfswitch expression=”#myVar#”>
<cfcase
value=1>
One
</cfcase>
<cfcase value=2>
Two
</cfcase>
<cfcase value=3>
Three
</cfcase>
</cfswitch>
هر دو کد يک کار واحد انجام مي دهند اما ساختار cfswitch بهينه تر مي باشد، زيرا مقدار متغير myVar به جاي سه بار، يک بار ارزيابي مي
کند. کلدفيوژن عبارات cfswitch را بسيار بهينه تر از عبارات cfif اجرا مي کند ، زيرا براي اجراي cfif، هر دفعه هر مقدار هر عبارت شرطي را
ارزيابي مي کند (true يا false) تا آنجا مقدار يک عبارت true
شود، ولي cfswitch
ابتدا مقدار عبارت را ارزيابي مي کند (يک بار) و سپس قسمت مطابق با آن را اجرا مي
کند.
مقادير ذکر شده در cfcase بايد از نوع ثابت باشند و نمي توانند
متغير و يا عبارت باشند. به عنوان مثال، تکه کد زير
مجاز نيست :
<cfswitch expression=”#MyVar#”>
…
<cfcase
value=”#1+1#”>
Two
</cfcase>
…
</cfswitch>
در کد زير cfdefaultcase برابر cfelse در ساختار cfif مي باشد.
<cfswitch expression=”#myVar#”>
<cfcase
value=1>
One
</cfcase>
<cfcase value=2>
Two
</cfcase>
<cfcase value=3>
Three
</cfcase>
<cfdefaultcase>
Some Other Number
</cfdefaultcase>
</cfswitch>
کد بالا به اين معناست که اگر هيچ يک از مقادير cfcase برابر مقدار عبارت نبودند، بلوک کد مربوط
به cfdefaultcase را اجرا کند.
اگر چه ساختار هاي cfswitch مزاياي زيادي دارند، اما در اغلي
اوقات نمي توان از آن به جاي cfif استفاده کرد. مثلا به کد زير توجه کنيد :
<cfif MyVar GREATER THAN myOtherVar>
<cfoutput>#MyVar#</cfoutput>
<cfesleif myVar
EQUAL myOtherVar>
<cfoutput>#MyVar+MyOtherVar#</cfoutput>
<cfelse>
<cfoutput>#MyOtherVar#</cfoutput>
</cfif>
اين کد را نمي توان به وسيله ساختار cfswitch نوشت. زيرا عبارات شرطي کد بالا چيزي
بيشتر از يک مقايسه ي برابري ساده مي باشند.
بازگشت به فهرست
بازگشت به صفحه نخست