उदाहरण के लिए, क्या निम्न कोड में do
की उपस्थिति या अनुपस्थिति प्रोग्राम के व्यवहार को प्रभावित करती है?रुबी में आवश्यक कीवर्ड कब होता है?
while true do
puts "Hi"
break
end
while true
puts "Hi"
break
end
उदाहरण के लिए, क्या निम्न कोड में do
की उपस्थिति या अनुपस्थिति प्रोग्राम के व्यवहार को प्रभावित करती है?रुबी में आवश्यक कीवर्ड कब होता है?
while true do
puts "Hi"
break
end
while true
puts "Hi"
break
end
:
एक
while
याuntil
पाश मेंdo
कीवर्ड एकif
बयान मेंthen
कीवर्ड की तरह है: यह पूरी तरह से जब तक हटाया जा सकता है लूप स्थिति और लूप बॉडी के बीच एक नई लाइन (या अर्धविराम) दिखाई देती है।
तो, नहीं, यह व्यवहार को नहीं बदलेगा, यह सिर्फ वैकल्पिक वाक्यविन्यास है।
चलो पता लगाएं!
जल्द जवाब हम रूबी के दस्तावेज़ को देखो और http://www.ruby-doc.org/core-2.1.1/doc/syntax/control_expressions_rdoc.html#label-while+Loop जिसमें कहा गया है किकीवर्ड वैकल्पिक है कर पा सकते हैं के लिए
।
ठीक है तो ये दो उदाहरण समकक्ष हैं लेकिन क्या वे समान हैं? वे एक ही काम कर सकते हैं लेकिन शायद एक दूसरे के पक्ष में एक का पक्ष लेने का एक कारण है। हम एएसटी को देख सकते हैं कि ये उदाहरण उत्पन्न होते हैं और देखें कि क्या कोई अंतर है या नहीं।
> gem install ruby_parser
> irb
> require 'ruby_parser'
=> true
> with_do = <<-END
while true do
puts "Hi"
break
end
END
=> "while true do\n puts \"Hi\"\n break\nend\n"
> without_do = <<-END
while true
puts "Hi"
break
end
END
=> "while true\n puts \"Hi\"\n break\nend\n"
> RubyParser.new.parse with_do
=> s(:while, s(:true), s(:block, s(:call, nil, :puts, s(:str, "Hi")), s(:break)), true)
> RubyParser.new.parse without_do
=> s(:while, s(:true), s(:block, s(:call, nil, :puts, s(:str, "Hi")), s(:break)), true)
नहीं। ये दो उदाहरण सटीक समान निर्देश निष्पादित करते हैं ताकि हम जो भी शैली पढ़ सकें, उसे पढ़ने में आसानी मिल सके। एक सामान्य वरीयता do
को संभव होने पर छोड़ना है: https://github.com/bbatsov/ruby-style-guide#no-multiline-while-do
यह दिलचस्प है (मुझे 'ruby_parser' देखना चाहिए), लेकिन सभी 'irb' संकेतों के साथ पढ़ने के लिए अनावश्यक रूप से मुश्किल है। मेरा सुझाव है कि आप उन्हें हटा दें। –
@CarySwoveland आप संकेतों को संपादित कर सकते हैं और इस प्रश्न को बेहतर दिखने में मदद कर सकते हैं। – DiegoSalazar
@ diego.greyrobot, मैंने लगभग कभी नहीं लिखा है कि दूसरों ने क्या लिखा है। जैसा कि मैंने इसे देखा, वे शब्दों के मालिक हैं, इसलिए मैं सुझावों के सुझावों से अधिक नहीं कर सकता। (बहुत पुराना स्कूल, मुझे पता है।) क्या आप मेरी प्रतिक्रिया का अनुमान लगा सकते हैं जब दूसरों ने जो लिखा है उसे संपादित करें? :-) –