હાસ્કેલમાં રક્ષકો વિધેયોને વ્યાખ્યાયિત કરતી વખતે થોડી વધુ લવચીકતા ઉમેરે છે. તેઓ તમને આ શરતો પૂરી થાય છે કે કેમ તેના આધારે વિવિધ શરતોનો ઉલ્લેખ કરવાની અને કોડના વિવિધ ટુકડાઓ ચલાવવાની મંજૂરી આપે છે. સમાંતર શરતી નિવેદનો સાથે બનાવી શકાય છે જે અન્ય ભાષાઓમાં જોઈ શકે છે, પરંતુ વધુ ભવ્ય અને સંક્ષિપ્ત અમલીકરણ સાથે. હાસ્કેલ એ શુદ્ધ કાર્યાત્મક ભાષા છે, જેનો અર્થ છે કે પ્રોગ્રામમાં અન્યત્ર ડેટા બદલવા જેવી આડઅસરો પ્રતિબંધિત છે. રક્ષકો આ દૃષ્ટાંતમાં આવી પરિસ્થિતિઓને હેન્ડલ કરવાનો માર્ગ પૂરો પાડે છે.
નેસ્ટેડ ગાર્ડ્સની સમસ્યા
ઘણીવાર હાસ્કેલમાં, તમને એવી પરિસ્થિતિ મળશે કે જ્યાં ચોક્કસ શરત પૂરી કરવાની જરૂર છે, પરંતુ પછી તે શરતની અંદર, બીજી શરત પણ પૂરી કરવાની જરૂર છે. જો કે, આ શરતો હંમેશા 'જો' અને 'બીજું' નિવેદનો સાથે અથવા પેટર્નની સૂચિ સાથે કુદરતી રીતે વ્યક્ત થતી નથી. અહીં છે જ્યાં નેસ્ટેડ રક્ષકો ઉપયોગી થઈ શકે છે.
શરૂઆતમાં, હાસ્કેલ નેસ્ટેડ રક્ષકોને એવી રીતે સમર્થન આપતું નથી કે જેનાથી એક ગાર્ડ બીજાને સીધો સમાવી શકે. જ્યારે પેટર્ન મેચિંગ અનિશ્ચિત રૂપે માળો બનાવી શકે છે, ત્યારે રક્ષકો "ફ્લેટ" માળખા સુધી મર્યાદિત છે. તેથી, એક અલગ અભિગમ અપનાવવો જોઈએ.
સમસ્યાનો ઉકેલ
આ સમસ્યાને ઉકેલવા અને નેસ્ટેડ ગાર્ડની કાર્યક્ષમતા હાંસલ કરવા માટે, ઇજનેરોએ ગાર્ડ્સમાં કેસ અભિવ્યક્તિઓનો સમાવેશ કરવાની વ્યૂહરચના ઘડી છે. હાસ્કેલમાં કેસ અભિવ્યક્તિઓ આવશ્યકપણે સ્વિચ છે, અભિવ્યક્તિનું મૂલ્યાંકન કરે છે અને મેળ ખાતી પ્રથમ શાખામાં નિયંત્રણ પસાર કરે છે. જ્યારે રક્ષકો સાથે જોડવામાં આવે ત્યારે તેઓ ચોક્કસ સ્તરના માળખાગત તર્ક પ્રદાન કરે છે.
ચેક નંબર નંબર =
| num > 0 = કેસ (સંખ્યા `મોડ` 2 == 0) ની
સાચું -> "સકારાત્મક અને સમાન"
ખોટું -> "સકારાત્મક અને વિચિત્ર"
| સંખ્યા < 0 = "નકારાત્મક" | અન્યથા = "શૂન્ય" [/code] ઉપરોક્ત કોડ સ્નિપેટમાં, ફંક્શન "checkNumber" એક પરિમાણ "num" સાથે વ્યાખ્યાયિત થયેલ છે. ગાર્ડની અંદર, સ્થિતિને વધુ વિભાજીત કરવા માટે કેસ એક્સપ્રેશનનો ઉપયોગ કરવામાં આવે છે. એવા કિસ્સાઓમાં કે જ્યાં 'સંખ્યા' ધન સંખ્યા છે, ફંક્શન તપાસે છે કે તે એકી છે કે વિષમ છે.
કોડનું સ્ટેપ-બાય-સ્ટેપ સમજૂતી
- ફંક્શન "ચેકનમ્બર" આપેલ નંબરની પ્રકૃતિની આગાહી કરે છે.
- જ્યારે ફંક્શનને બોલાવવામાં આવે છે, ત્યારે પાસ કરેલ પેરામીટરનું મૂલ્યાંકન રક્ષકો દ્વારા કરવામાં આવે છે.
- પ્રથમ રક્ષક તપાસ કરે છે કે શું સંખ્યા શૂન્ય કરતાં મોટી છે. જો તે સાચું હોય, તો કેસની અભિવ્યક્તિ બોલાવવામાં આવે છે.
- કેસ અભિવ્યક્તિ તપાસે છે કે સંખ્યા સમાન છે કે વિષમ અને યોગ્ય સ્ટ્રિંગ પરત કરે છે.
- જો નંબર સકારાત્મક નથી, તો રક્ષક આગળની સ્થિતિ પર જાય છે, જે તપાસે છે કે તે નકારાત્મક છે કે નહીં. જો સાચું હોય, તો "નકારાત્મક" પરત કરવામાં આવે છે.
- જો સંખ્યા હકારાત્મક અથવા નકારાત્મક નથી, તો તે શૂન્ય હોવી જોઈએ, અને તેથી "શૂન્ય" પરત કરવામાં આવે છે.
ગાર્ડ્સમાં કેસ એક્સપ્રેશનનો ઉપયોગ કરવાની વ્યૂહરચના ઇચ્છિત નેસ્ટેડ ગાર્ડ કાર્યક્ષમતાનું અનુકરણ કરવાનો માર્ગ પૂરો પાડે છે. આ ખ્યાલ કોડ સ્પષ્ટતા માટે અને કાર્યાત્મક પ્રોગ્રામિંગની મર્યાદાઓમાં સાહજિક રીતે પ્રોગ્રામ પ્રવાહનું સંચાલન કરવા માટે ચાવીરૂપ છે.
સારાંશ
એકંદરે, હાસ્કેલ જેવી શુદ્ધ કાર્યાત્મક ભાષાઓમાં, પ્રોગ્રામ ફ્લો અને શરતોનું સંચાલન કરવું ઘણીવાર એક પડકાર બની શકે છે. ગાર્ડ્સ અને કેસ એક્સપ્રેશન્સનો ઉપયોગ સમૃદ્ધ, સાહજિક સ્થિતિ તર્ક અને નિયંત્રણ પ્રવાહ પ્રદાન કરવા, કોડને સ્પષ્ટ, સમજવામાં સરળ અને જાળવવા માટે અસરકારક રીતે કરી શકાય છે.