2015-01-12 14 views

उत्तर

7
The Ruby Programming Language पुस्तक धारा 5.2.1 के अनुसार

:

एक while या until पाश में do कीवर्ड एक if बयान में then कीवर्ड की तरह है: यह पूरी तरह से जब तक हटाया जा सकता है लूप स्थिति और लूप बॉडी के बीच एक नई लाइन (या अर्धविराम) दिखाई देती है।

तो, नहीं, यह व्यवहार को नहीं बदलेगा, यह सिर्फ वैकल्पिक वाक्यविन्यास है।

6

चलो पता लगाएं!

जल्द जवाब हम रूबी के दस्तावेज़ को देखो और 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

+0

यह दिलचस्प है (मुझे 'ruby_parser' देखना चाहिए), लेकिन सभी 'irb' संकेतों के साथ पढ़ने के लिए अनावश्यक रूप से मुश्किल है। मेरा सुझाव है कि आप उन्हें हटा दें। –

+0

@CarySwoveland आप संकेतों को संपादित कर सकते हैं और इस प्रश्न को बेहतर दिखने में मदद कर सकते हैं। – DiegoSalazar

+0

@ diego.greyrobot, मैंने लगभग कभी नहीं लिखा है कि दूसरों ने क्या लिखा है। जैसा कि मैंने इसे देखा, वे शब्दों के मालिक हैं, इसलिए मैं सुझावों के सुझावों से अधिक नहीं कर सकता। (बहुत पुराना स्कूल, मुझे पता है।) क्या आप मेरी प्रतिक्रिया का अनुमान लगा सकते हैं जब दूसरों ने जो लिखा है उसे संपादित करें? :-) –

संबंधित मुद्दे