रूबी में मल्टी-लाइन टिप्पणियाँ?


746

मैं रूबी में कई लाइनें कैसे कह सकता हूं?


7
यदि किसी को पपेट .ppमैनिफेस्ट में बहुस्तरीय टिप्पणियों की तलाश है, जो रूबी की तरह सिंटैक्स पर आधारित है, तो आप सी-स्टाइल ब्लॉक टिप्पणियों का उपयोग कर सकते हैं /**/
msanford

6
यह बल्कि दुर्भाग्यपूर्ण है कि रूबी में बहुस्तरीय टिप्पणियां कोड के एक ब्लॉक की तरह दिखती हैं। और इस प्रश्न (और स्वीकृत उत्तर) से सम्मानित उच्च बिंदुओं को देखते हुए रूबी सिंटैक्स पर काम करने वाले लोगों को इसके बारे में स्पष्ट रूप से सोचना चाहिए।
निक

जवाबों:


1354
#!/usr/bin/env ruby

=begin
Every body mentioned this way
to have multiline comments.

The =begin and =end must be at the beginning of the line or
it will be a syntax error.
=end

puts "Hello world!"

<<-DOC
Also, you could create a docstring.
which...
DOC

puts "Hello world!"

"..is kinda ugly and creates
a String instance, but I know one guy
with a Smalltalk background, who
does this."

puts "Hello world!"

##
# most
# people
# do
# this


__END__

But all forgot there is another option.
Only at the end of a file, of course.
  • यह इसी तरह दिखता है (स्क्रीनशॉट के माध्यम से) - अन्यथा यह व्याख्या करना कठिन है कि उपरोक्त टिप्पणियां कैसे दिखेंगी। ज़ूम इन करने के लिए क्लिक करें :

पाठ-संपादक में टिप्पणियाँ


26
मैं वास्तव में #उन सभी का उपयोग करना पसंद करता हूं , ज्यादातर क्योंकि यह नेत्रहीन रूप से टिप्पणी की गई पंक्तियों को अलग करता है =begin/ =endयहां-वहां विधि का उपयोग करके। और, अच्छी नौकरी।
टिन मैन

38
यह दिलचस्प है कि यह उत्तर वाक्यविन्यास हाइलाइटर में कुछ खामियों को स्पष्ट करता है।
ZoFreX 19

69
यह मत भूलो =beginऔर =endकिसी भी व्हाट्सएप से पहले नहीं हो सकता।
bergie3000 0

15
और एक विधि के भीतर = शुरू = अंत का उपयोग करना संभव नहीं है
अल्बर्ट कैटला

7
यह ध्यान रखना महत्वपूर्ण है कि उपरोक्त उदाहरण कोड में, केवल पहली =begin...=endऔर आखिरी ब्लॉक का उपयोग #दस्तावेज तैयार करते समय rdoc द्वारा किया जाता है।
टिन मैन

126
=begin
My 
multiline
comment
here
=end

4
यकीन है, आप ऐसा कर सकते थे । यह काम करता हैं। यह अविश्वसनीय रूप से दुर्लभ है। मुझे यह बदसूरत लगता है। शायद मैं अपने तरीकों में फंस गया हूं?
डेविड जे।

53
मैंने पाया है कि यदि मैं = शुरुआत या अंत से पहले एक टैब शामिल करता हूं, तो टिप्पणियां काम नहीं करती हैं। प्रत्येक पंक्ति की शुरुआत में प्रत्येक को = = आरंभ और अंत लिखा जाना चाहिए।
रोजे

1
आप अकेले नहीं हैं @DavidJames। मैंने व्यक्तिगत रूप से उन सभी को अपने संपादक द्वारा टिप्पणी करने का विकल्प चुना है। CMD + / या ALT + / अधिकांश के लिए सम्मेलन है।
अनोन ५58१

1
@DavidJames, आप इसके बजाय क्या करेंगे? #हर एक लाइन से पहले a और space टाइप करें ? यह बहुत कीस्ट्रोक्स है खासकर अगर मैं लाइन ब्रेक जोड़ना शुरू करता हूं।
पॉल ड्रेपर

57

के अस्तित्व के बावजूद =beginऔर =end, टिप्पणी करने के लिए सामान्य और अधिक सही तरीका #प्रत्येक पंक्ति पर उपयोग करना है । यदि आप किसी रूबी लाइब्रेरी के स्रोत को पढ़ते हैं, तो आप देखेंगे कि यह लगभग सभी मामलों में बहु-पंक्ति टिप्पणियाँ हैं।


4
आपके कथन के "अधिक सही" भाग के बारे में आपको तर्क मिल सकते हैं क्योंकि वे दोनों मान्य हैं। मैं उपयोग करना पसंद करता हूं #क्योंकि यह अधिक स्पष्ट है। कोड को कमेंट करते समय यह स्पष्ट करना महत्वपूर्ण है कि क्या हुआ है। यदि आप किसी संपादक का उपयोग करके कोड कलरिंग के लाभ के बिना कोड देख रहे हैं, =begin/=endतो यह पता लगाना कठिन हो सकता है कि कोड को अनदेखा क्यों किया जा रहा है।
टिन मैन

6
यकीन है, टिप्पणी लिखने के कई "वैध" तरीके हैं। चलो यहाँ व्यावहारिक हो। यदि आप वास्तव में रूबी लिखते हैं और पढ़ते हैं कि दूसरे क्या लिखते हैं, तो आपको #टिप्पणियों का उपयोग करना चाहिए । (मुझे पता है कि यह दो गिरावट क्यों थी। मुझे लगता है कि स्टैक ओवरफ्लो समुदाय को इसे गलत साबित करना है ...!
डेविड जे।

4
3 == threeजहां def three; 1 + 1 + 1 end। इसलिए दोनों वैध हैं। किसे पड़ी है? का उपयोग करें 3!
डेविड जे।

1
@theTinMan सच है, आम तौर पर केवल उसी समय जब आपको सिंटैक्स हाइलाइटिंग की कमी होती है (मेरे अनुभव में) जब आप viउत्पादन सर्वर पर उपयोग कर रहे होते हैं । जिस स्थिति में, आपको संभवतः अपना विकास वैसे भी नहीं करना चाहिए।
पार्थियन शॉट

1
@DavidJames आपका उदाहरण हास्यास्पद है क्योंकि यह अधिक क्रिया है। हर पंक्ति पर एक हैश रखना अधिक समय तक टिप्पणी के लिए क्रिया है। और अगर किसी को लगता है कि "/ dev / urandom वाक्यांश का उपयोग यहां गैर-क्रिप्टोग्राफिक-साउंड PRNG के लिए किया गया था। इस कोड को न छुएं- यह जादू है" माणिक लिखने पर मेरा प्रयास है, मैं चाहूंगा कि उनका भ्रम उनकी अज्ञानता से अधिक बढ़े। खदान पर स्पष्टता की कमी के कारण। जो यह कहना नहीं चाहता है कि आपकी बात हमेशा अमान्य है- यह केवल एक अच्छा है जब बाहर कोड टिप्पणी की जाती है। लेकिन अगर आपकी टिप्पणी सिर्फ ... टिप्पणी है ... यह या तो स्पष्ट होना चाहिए।
पार्थियन शॉट

20
#!/usr/bin/env ruby

=begin
Between =begin and =end, any number
of lines may be written. All of these
lines are ignored by the Ruby interpreter.
=end

puts "Hello world!"

1
+1 क्योंकि मुझे पता नहीं था कि रूबी मल्टीलाइन टिप्पणियों में नेस्टिंग एक चीज थी।
पार्थियन शॉट

2
@ParthianShot - यह कोई बात नहीं है - = शुरुआत और = अंत को अनदेखा किया जाता है यदि एक पंक्ति की शुरुआत में नहीं। घोंसला बनाना संभव नहीं लगता।
21

एक टिप्पणी के अंदर एक टिप्पणी करने के परिणामस्वरूप या तो एक टिप्पणी या एक वाक्यविन्यास त्रुटि हो सकती है एक टिप्पणी को समाप्त करने की कोशिश कर रही है जहां कोई टिप्पणी समाप्त नहीं होती है। /*I am a\n#nested\ncomment, which really serves no purpose*/ /*I am bound /*to*/ FAIL!*/यह समझ में आ सकता है कि यदि आपके पास बहुस्तरीय टिप्पणी के अंदर एकल पंक्ति टिप्पणियाँ और कोड हैं, जैसे कि एक दस्तावेज़ जिसमें आप लोगों को उपयोग नहीं करना चाहते हैं, लेकिन आप इसे फ़ाइल से निकालना भी नहीं चाहते हैं।
चिनोटो वोक्रो

17

या तो उपयोग करना:

= शुरू
इस
है
ए
टिप्पणी
खंड मैथा
= अंत

या

# इस
# है
# ए
# टिप्पणी
# खंड मैथा

वर्तमान में केवल दो ही rdoc द्वारा समर्थित हैं, जो कि केवल मेरे विचार से उपयोग करने का एक अच्छा कारण है।


1
करने के लिए छड़ी करने के लिए एक और अच्छा कारण =beginया #कि दोनों है <<-DOCऔर "वाक्यविन्यास निष्पादन पर बेकार स्ट्रिंग शाब्दिक उत्पन्न होगा।
कोयूर

13
=begin
(some code here)
=end

तथा

# This code
# on multiple lines
# is commented out

दोनों सही हैं पहले प्रकार की टिप्पणी का लाभ संपादन क्षमता है - इसे कम करना आसान है क्योंकि कम वर्ण हटाए जाते हैं। दूसरे प्रकार की टिप्पणी का लाभ पठनीयता है - लाइन द्वारा कोड लाइन को पढ़ना, यह बताना बहुत आसान है कि किसी विशेष लाइन को टिप्पणी दी गई है। आपका कॉल लेकिन इस बारे में सोचें कि आपके बाद कौन आ रहा है और उन्हें पढ़ना और बनाए रखना कितना आसान है।


IMO, =beginऔर =endनेत्रहीन यह न बताएं कि इन-इन-द-कमेंट क्या है ... उदाहरण के लिए क्लोजर, का उपयोग करता है, (comment :whatever)जो लीड में कहता है कि इसका क्या अर्थ है: stackoverflow.com/questions/1191628/block-comments-in-clo-ure
डेविड जे।

1
जावा, C और C ++ में न तो "/ *" और "* /" करें। रूबी सिंटैक्स के साथ, कोड के बड़े ब्लॉकों को उन दो पात्रों के बीच टिप्पणी की जा सकती है, और हर कोई जो भाषा की मूल बातें जानता है, वह जानता है कि उनका क्या मतलब है।
ला-कोमाद्रेजा

1
सिंटैक्स रंग (उदाहरण के लिए, उदाहरण के लिए) दर्शाता है कि पहला प्रकार एक टिप्पणी है। उस स्थिति में, पहले प्रकार का कोई नुकसान नहीं है।
केमिली गौडेय्यून

12

यहाँ एक उदाहरण है :

=begin 
print "Give me a number:"
number = gets.chomp.to_f

total = number * 10
puts  "The total value is : #{total}"

=end

सब कुछ आप के बीच में जगह है =beginऔर =endएक टिप्पणी के रूप में माना जाएगा कि कोड की कितनी पंक्तियों के बीच है।

नोट: सुनिश्चित करें कि बीच में कोई जगह नहीं है =और begin:

  • सही बात: =begin
  • गलत: = begin

4

=begin comment line 1 comment line 2 =end सुनिश्चित करें कि = आरंभ और अंत उस रेखा पर पहली चीज़ है (कोई स्थान नहीं)


2

यदि कोई व्यक्ति रूबी ऑन रेल्स में एक html टेम्पलेट में कई पंक्तियों पर टिप्पणी करने का तरीका ढूंढ रहा है, तो उदाहरण के लिए = start = end = के साथ कोई समस्या हो सकती है:

<%
=begin
%>
  ... multiple HTML lines to comment out
  <%= image_tag("image.jpg") %>
<%
=end
%>

%> इमेज_टैग को बंद करने के कारण विफल हो जाएगा।

इस मामले में, शायद यह तर्कपूर्ण है कि यह टिप्पणी कर रहा है या नहीं, लेकिन मैं "यदि गलत है" ब्लॉक के साथ अवांछनीय अनुभाग को संलग्न करना पसंद करता हूं:

<% if false %>
  ... multiple HTML lines to comment out
  <%= image_tag("image.jpg") %>
<% end %>

यह काम करेगा।


0
  def idle
    <<~aid
    This is some description of what idle does.

    It does nothing actually, it's just here to show an example of multiline
    documentation. Thus said, this is something that is more common in the
    python community. That's an important point as it's good to also fit the
    expectation of your community of work. Now, if you agree with your team to
    go with a solution like this one for documenting your own base code, that's
    fine: just discuss about it with them first.

    Depending on your editor configuration, it won't be colored like a comment,
    like those starting with a "#". But as any keyword can be used for wrapping
    an heredoc, it is easy to spot anyway. One could even come with separated
    words for different puposes, so selective extraction for different types of
    documentation generation would be more practical. Depending on your editor,
    you possibly could configure it to use the same syntax highlight used for
    monoline comment when the keyword is one like aid or whatever you like.

    Also note that the squiggly-heredoc, using "~", allow to position
    the closing term with a level of indentation. That avoids to break the visual reading flow, unlike this far too long line.
    aid
  end

ध्यान दें कि पोस्ट के समय, स्टैकओवरफ़्लो इंजन सिंटैक्स रंगाई को सही ढंग से प्रस्तुत नहीं करता है। अपनी पसंद के संपादक के रूप में इसका परीक्षण करना एक अभ्यास के रूप में जाने देना है। ;)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.