PDA

نسخه کامل مشاهده نسخه کامل : آموزش ColdFusion ، ساختار Switch/Case



javadshahvand
13-10-2007, 10:36
ساختار Switch/Case یک عبارت را در برابر چندین شرط، ارزیابی می کند و سپس کد مربوطه را اجرا می کند.
مثلا، تکه کد زیر را در نظر بگیرید :
<cfif myVar EQ ۱>
One
<cfelseif myVar EQ ۲>
Two
<cfelseif myVar EQ ۳>
Three
</cfif>

تکه کد بالا مقدار myVar را سه بار ارزیابی می کند و هر بار تست می کند که آیا مقدار آن برابر مقدار خاصی هست یا نه. کد بالا را می توان به صورت بهتر می توان نوشت :
<cfswitch expression=”#myVar#”>
<cfcase value=۱>
One
</cfcase>
<cfcase value=۲>
Two
</cfcase>
<cfcase value=۳>
Three
</cfcase>
</cfswitch>

هر دو کد یک کار واحد انجام می دهند اما ساختار cfswitch بهینه تر می باشد، زیرا مقدار متغیر myVar به جای سه بار، یک بار ارزیابی می کند. کلدفیوژن عبارات cfswitch را بسیار بهینه تر از عبارات cfif اجرا می کند ، زیرا برای اجرای cfif، هر دفعه هر مقدار هر عبارت شرطی را ارزیابی می کند (true یا false) تا آنجا مقدار یک عبارت true شود، ولی cfswitch ابتدا مقدار عبارت را ارزیابی می کند (یک بار) و سپس قسمت مطابق با آن را اجرا می کند.
مقادیر ذکر شده در cfcase باید از نوع ثابت باشند و نمی توانند متغیر و یا عبارت باشند. به عنوان مثال، تکه کد زیر مجاز نیست :
<cfswitch expression=”#MyVar#”>

<cfcase value=”#۱+۱#”>
Two
</cfcase>

</cfswitch>

در کد زیر cfdefaultcase برابر cfelse در ساختار cfif می باشد.
<cfswitch expression=”#myVar#”>
<cfcase value=۱>
One
</cfcase>
<cfcase value=۲>
Two
</cfcase>
<cfcase value=۳>
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 نوشت. زیرا عبارات شرطی کد بالا چیزی بیشتر از یک مقایسه ی برابری ساده می باشند.

نویسنده : هادی مشیدی

سایت ماکرومدیاx