Come posso commentare più righe in Ruby?
Come posso commentare più righe in Ruby?
Risposte:
#!/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.
#
usarli sopra tutti, principalmente perché separa visivamente le righe commentate meglio di =begin
/ =end
o usando il metodo here-to. E, bel lavoro.
=begin
e =end
non può essere preceduto da spazi bianchi.
=begin...=end
e l'ultimo blocco utilizzati #
vengono raccolti da rdoc durante la generazione della documentazione.
=begin
My
multiline
comment
here
=end
#
e spazio prima di ogni singola riga? Sono molti i tasti premuti soprattutto se inizio ad aggiungere interruzioni di riga.
Nonostante l'esistenza di =begin
e =end
, il modo normale e più corretto di commentare è usare quello #
su ogni riga. Se leggi la fonte di qualsiasi libreria di ruby, vedrai che questo è il modo in cui vengono fatti i commenti su più righe in quasi tutti i casi.
#
perché è più ovvio. Nel commentare il codice è importante renderlo ovvio che è quello che è successo. Se stai visualizzando il codice senza il vantaggio della colorazione del codice in un editor, =begin/=end
può essere difficile capire perché il codice viene ignorato.
#
commenti. (Sono sconcertato perché questo ha avuto due downvotes. Immagino che la comunità Stack Overflow debba sbagliare a volte!)
3 == three
dove def three; 1 + 1 + 1 end
. Pertanto entrambi sono validi. Che importa? Usa 3
!
vi
su un server di produzione. In tal caso, probabilmente non dovresti fare il tuo sviluppo lì, comunque.
#!/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!"
/*I am a\n#nested\ncomment, which really serves no purpose*/
/*I am bound /*to*/ FAIL!*/
Potrebbe avere senso se hai commenti a riga singola e codice all'interno di un commento su più righe, ad esempio una funzione con documentazione che non vuoi che le persone usino, ma che non vuoi anche rimuoverlo dal file.
Utilizzando uno dei due:
= inizio Questo è un' commento bloccare = fine
o
# Questo # è # a # commento # blocco
sono gli unici due attualmente supportati da rdoc, che è una buona ragione per usare solo questi, penso.
=begin
o #
è che entrambi <<-DOC
e le "
sintassi genereranno letterali stringa inutili durante l'esecuzione.
=begin
(some code here)
=end
e
# This code
# on multiple lines
# is commented out
sono entrambi corretti. Il vantaggio del primo tipo di commento è la modificabilità: è più semplice rimuovere il commento perché vengono eliminati meno caratteri. Il vantaggio del secondo tipo di commento è la leggibilità: leggendo il codice riga per riga, è molto più facile dire che una determinata riga è stata commentata. La tua chiamata, ma pensa a chi ti verrà dietro e quanto sarà facile per loro leggere e mantenere.
=begin
e =end
non trasmettere visivamente che ciò che sta nel mezzo sia un commento ... Clojure, per esempio, usa ciò (comment :whatever)
che ai lead dice cosa significa: stackoverflow.com/questions/1191628/block-comments-in-clojure
Ecco un esempio:
=begin
print "Give me a number:"
number = gets.chomp.to_f
total = number * 10
puts "The total value is : #{total}"
=end
Tutto ciò che metti tra =begin
e=end
verrà trattato come un commento indipendentemente da quante righe di codice contiene tra.
Nota: assicurarsi che non vi sia spazio tra =
e begin
:
=begin
= begin
=begin
comment line 1
comment line 2
=end
assicurati che = inizio e = fine sia la prima cosa su quella linea (nessuno spazio)
Nel caso in cui qualcuno stia cercando un modo per commentare più righe in un modello html in Ruby on Rails, potrebbe esserci un problema con = begin = end, ad esempio:
<%
=begin
%>
... multiple HTML lines to comment out
<%= image_tag("image.jpg") %>
<%
=end
%>
fallirà a causa della chiusura di%> tag_immagine.
In questo caso, forse è discutibile se questo sta commentando o no, ma preferisco racchiudere la sezione indesiderata con un blocco "if false":
<% if false %>
... multiple HTML lines to comment out
<%= image_tag("image.jpg") %>
<% end %>
Questo funzionerà.
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
Si noti che al momento del post, il motore stackoverflow non esegue correttamente il rendering della colorazione della sintassi. Testare come viene visualizzato nel tuo editor preferito è un esercizio. ;)
.pp
manifest di Puppet (che si basa su una sintassi simile a Ruby) puoi usare i commenti di blocco in stile c/**/