else
कथन के बारे में राय मौजूद है कि हमें इसे unless
के साथ उपयोग नहीं करना चाहिए?क्या हम कथन के बिना अन्य का उपयोग करते हैं?
क्या कोई यह समझा सकता है कि यह क्यों है, या हम जहां भी चाहें वहां जाने के लिए स्वतंत्र हैं?
else
कथन के बारे में राय मौजूद है कि हमें इसे unless
के साथ उपयोग नहीं करना चाहिए?क्या हम कथन के बिना अन्य का उपयोग करते हैं?
क्या कोई यह समझा सकता है कि यह क्यों है, या हम जहां भी चाहें वहां जाने के लिए स्वतंत्र हैं?
आप निश्चित रूप से unless
के साथ else
का उपयोग कर सकते हैं। उदा .:
x=1
unless x>2
puts "x is 2 or less"
else
puts "x is greater than 2"
end
"x 2 या उससे कम" प्रिंट करेगा।
लेकिन सिर्फ इसलिए कि आप कर सकते हैं इसका मतलब यह नहीं है कि होना चाहिए। प्रायः, इन निर्माणों को पढ़ने के लिए जटिल हैं, और आप बेहतर वाक्यांश के लिए एक सकारात्मक रास्ते में अपनी हालत परोसा जा चाहते हैं, एक सरल if
का उपयोग कर:
x=1
if x<=2
puts "x is 2 or less"
else
puts "x is greater than 2"
end
हां, हम unless
else
के साथ उपयोग कर सकते हैं। हम जहां भी चाहें वहां जाने के लिए स्वतंत्र हैं लेकिन कुछ लोगों की राय है कि unless
के साथ उपयोग करने की अच्छी आदत नहीं है। हमें इससे बचने की जरूरत है।
दुर्भाग्यवश, जब तक कि कथन केवल अन्यथा समर्थन नहीं करता है, इसमें इसके अलावा या अन्यथा नहीं है।
unless true
puts "one"
elsif true
puts "two"
else
puts "three"
end
SyntaxError: compile error
syntax error, unexpected kELSIF, expecting kEND
यह भी कारण है कि यह हमें प्रतिबंधित करता है।
उन लोगों के लिए जो भ्रम पसंद करते हैं, 'जब तक कि' कारण न हो, मैं न केवल 'elsif' बल्कि' elsunless 'जोड़ने का प्रस्ताव करता हूं। – CompuChip
बेशक, चूंकि "एल्सिफ़" दूसरे के अंदर घोंसले के लिए सिर्फ छोटा हाथ है, तो आप हमेशा तब तक लिख सकते हैं जब तक कि ... अन्य {जब तक ... अन्य {जब तक ...}}। 6 महीने के समय में इसे डिबगिंग का आनंद लें, हालांकि ... – IMSoP
यदि यह 'रखता है' तीन काम करता है "कभी निष्पादित नहीं किया जाएगा। –
unless else
का उपयोग करने से किसी को भी रोक नहीं रहा है। यह पूरी तरह से मान्य है।
लेकिन unless else
समझने के लिए मुश्किल है, और यह हमेशा आसानी से एक if else
जैसे के साथ बदला जा सकता है:
unless arr.empty?
stmnt_a
else
stmnt_b
end
if arr.empty?
stmnt_b
else
stmnt_a
end
के ऊपर आसान है कौन सा समझने के लिए?
दोनों को समझना आसान है। दिन के अंत में डेवलपर का निर्णय। दूसरी बार रेल डेवलपर अक्सर उपयोग करते हैं जब तक कि उन्हें समझना उनके लिए आसान नहीं है। –
मेरा उदाहरण मेरा बुरा था।जिस व्यक्ति ने कोड लिखा वह आसानी से समझ सकता है। लेकिन किसी अन्य व्यक्ति को कोड देखने के लिए, यह थोड़ा उलझन में मिल सकता है। इसके अलावा, हम तब तक बात कर रहे हैं जब तक कि अन्य शर्त न हो। – Santhosh
रेल डेवलपर इसका उपयोग अक्सर कर सकते हैं और इस प्रकार 'जब तक', I - गैर-रेल डेवलपर के रूप में कोई समस्या नहीं है - करते हैं। एक बार मुझे मिला एक आदर्श वाक्य है: ["अस्वीकार की अनावश्यक परतों के साथ अपने (बुलियन) कथन को अस्पष्ट न करें"। (Https://schneide.wordpress.com/2014/08/03/dont-ever-not -वॉइड-नकारात्मक-तर्क /) –
यदि सशर्त झूठ है तो कोड निष्पादित करता है। यदि सशर्त सत्य है, तो अन्य खंड में निर्दिष्ट कोड निष्पादित किया गया है।
x=1
unless x>2
puts "x is less than 2"
else
puts "x is greater than 2"
end
हम तब तक और अधिक खराब दृष्टिकोण के साथ उपयोग कर सकते हैं।
तकनीकी तौर पर यह एक else
के साथ एक unless
उपयोग करने के लिए बिल्कुल ठीक है:
unless user.staff?
# do foo
else
# do bar
end
केवल समस्या यह है कि यह कभी कभी मुश्किल है पढ़ने के लिए और समझने के लिए है।चूंकि कोड लिखित से अधिक बार पढ़ा जाता है, इसलिए इसे पढ़ने में ध्यान केंद्रित करने और भविष्य में अन्य डेवलपर्स के लिए समझने में आसान कोड लिखने के लिए बहुत अधिक समझदारी होती है।
if user.customer?
# do bar
else
# do foo
end
if true
बस में पार्स करने के लिए समझने के लिए आसान और सरल है:
if !user.staff?
# do bar
else
# do foo
end
या और भी बेहतर बनाने हालत पूरी तरह से से निषेध निकालें:
इसलिए आप के लिए इसे बदलने के लिए चाहते हो सकता है आप if !true
या unless true
से आगे बढ़ते हैं। अस्वीकृति से निपटना (या कभी-कभी दोहरा नकारात्मक) आपको दो बार सोचता है। इसलिए समुदाय इससे बचने की कोशिश करता है।
लेकिन तकनीकी रूप से यह ठीक है ...
रूबी यह अनुमति देता है, लेकिन अंग्रेजी में "अगर ... किसी और" (या "अगर ... अन्यथा") जबकि "जब तक एक आम निर्माण है। .. else "उस बिंदु पर काफी अनसुना है, जहां कई देशी वक्ताओं इसे गलत मानेंगे।
यह रूबी में unless/else
के साथ कुछ भ्रम में परिणाम देता है। जिन लोगों की मूल भाषा इसे अनुमति नहीं देती है, उनका उपयोग करने के लिए इसका उपयोग नहीं किया जाता है। यही कारण है कि इसके खिलाफ कई राय हैं। चूंकि रुबी इसका समर्थन करता है, वैसे भी आप इसे वैसे भी करने के लिए स्वतंत्र हैं।
यह उचित (किसी भी वैकल्पिक की तुलना में अधिक पठनीय) unless ... else ...
उपयोग करने के लिए हो सकता है जब else
ब्लॉक में कोड बहुत लंबा है और unless
ब्लॉक में कोड बहुत ही कम है।
unless user.staff?
raise SecurityError, 'not authorized'
else
# ...
# ...
# ... lots of code
# ...
# ...
end
आप इस दूसरी तरह के आसपास लिखी है,
if user.staff?
# ...
# ...
# ... lots of code
# ...
# ...
else
raise SecurityError, 'not authorized'
end
बाकी-खंड अब तक इसकी शर्त यह है कि आप लोगों को ऊपर स्क्रॉल बनाने होगी और नीचे बातें सीधे रखने के लिए निकाला जा सकता है उनके सिर में
यह विशेष रूप से उदाहरण बेहतर सब पर एक else
बिना लिखा है ...
unless user.staff?
raise SecurityError, 'not authorized'
end
# ...
# ...
# ... lots of code
# ...
# ...
... लेकिन यह है कि परिवर्तन हमेशा संभव नहीं है।
जब तक कि समझना मुश्किल न हो, और इसे आसानी से किसी और के साथ बदला जा सकता है। – Santhosh
अन्य भाषा में अन्य वाक्यविन्यास मौजूद है। और यदि यह जावास्क्रिप्ट में नहीं है तो एक और सवाल उठता है कि यह जावास्क्रिप्ट –
में क्यों नहीं है जब तक कि पाठक का अनुसरण करना मुश्किल न हो, यह ठीक है। अन्यथा ऐसा मत करो। –