En caso de que alguien caiga en esta búsqueda de comentarios de.pp/**/
varias líneas
66
Es bastante desafortunado que los comentarios multilínea en ruby se parezcan mucho a un bloque de código. Y dados los altos puntos otorgados a esta pregunta (y la respuesta aceptada), las personas que trabajan en la sintaxis ruby deberían pensar claramente un poco al respecto.
Nick
Respuestas:
1354
#!/usr/bin/env ruby=beginEvery body mentioned this way
to have multiline comments.The=beginand=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.
Así es como se ve (a través de la captura de pantalla); de lo contrario, es difícil interpretar cómo se verán los comentarios anteriores. Haga clic para acercar :
Realmente prefiero usar #sobre todos ellos, principalmente porque separa visualmente las líneas comentadas mejor que =begin/ =endo usando el método here-to. Y buen trabajo.
The Tin Man, el
38
Es interesante que esta respuesta haga obvias algunas fallas en el resaltador de sintaxis.
ZoFreX
69
No lo olvide =beginy =endno puede ser precedido por ningún espacio en blanco.
bergie3000
15
Y no es posible usar = begin = end dentro de un método
Albert Català
77
Es importante tener en cuenta que en el código de ejemplo anterior, rdoc solo recoge el primer =begin...=endy el último bloque que #se usa al generar la documentación.
Claro, usted podría hacer esto. Funciona. Esto es increíblemente raro. Lo encuentro feo. Tal vez estoy atrapado en mis caminos?
David J.
53
Descubrí que si incluyo una pestaña antes = comenzar o = finalizar, los comentarios no funcionan. El = comenzar y = terminar cada uno debe escribirse al comienzo de cada línea.
Rose Perrone
1
No estás solo @DavidJames. Personalmente he optado por que mi editor los comente a todos. CMD + / o ALT + / es la convención para la mayoría.
anon58192932
1
@DavidJames, ¿qué harías en su lugar? Escriba ay #espacio antes de cada línea? Son muchas pulsaciones de teclas, especialmente si empiezo a agregar saltos de línea.
Paul Draper
57
A pesar de la existencia de =beginy =end, la forma normal y más correcta de comentar es usar #'s en cada línea. Si lee la fuente de cualquier biblioteca de ruby, verá que esta es la forma en que se hacen comentarios de varias líneas en casi todos los casos.
Puede obtener argumentos sobre la parte "más correcta" de su declaración, ya que ambos son válidos. Prefiero usar #porque es más obvio. Al comentar el código, es importante que sea obvio que eso es lo que sucedió. Si está viendo el código sin el beneficio de colorear el código en un editor, =begin/=endpuede ser difícil descubrir por qué se ignora el código.
The Tin Man
66
Claro, hay muchas formas "válidas" de escribir comentarios. Seamos prácticos aquí. Si realmente escribes Ruby y lees lo que otros escriben, deberías estar usando #comentarios. (Estoy desconcertado por qué esto tuvo dos votos negativos. ¡Supongo que la comunidad de Stack Overflow tiene que equivocarse a veces!)
David J.
44
3 == threedonde def three; 1 + 1 + 1 end. Por lo tanto, ambos son válidos. ¿A quien le importa? Uso 3!
David J.
1
@theTinMan Si bien es cierto, en general, la única vez que le faltaría resaltar la sintaxis (en mi experiencia) es cuando está usando viun servidor de producción. En ese caso, probablemente no deberías estar haciendo tu desarrollo allí, de todos modos.
Parthian Shot
1
@DavidJames Su ejemplo es ridículo porque es más detallado. Poner un hash en cada línea es más detallado para comentarios más largos. Y si alguien piensa que la frase "/ dev / urandom se usó aquí para el PRNG sin bloqueo de sonido criptográfico. No toque este código, es mágico" es mi intento de escribir ruby, diría que su confusión surge más de la ignorancia en su parte de la falta de claridad sobre la mía. Lo que no quiere decir que su punto siempre sea inválido, es solo uno bueno al comentar el código. Pero si su comentario es solo ... comentario ... debe quedar claro de cualquier manera.
Parthian Shot
20
#!/usr/bin/env ruby=beginBetween=beginand=end, any number
of lines may be written.All of these
lines are ignored by the Ruby interpreter.=end
puts "Hello world!"
+1 porque no tenía idea de que anidar era una cosa en los comentarios multilínea de Ruby.
Parthian Shot
2
@ParthianShot - No es una cosa - = comienzo y = fin son ignorados si no al comienzo de una línea. La anidación no parece ser posible.
skagedal
Anidar un comentario dentro de un comentario daría como resultado un solo comentario o un error de sintaxis al intentar finalizar un comentario donde no hay ningún comentario para finalizar. /*I am a\n#nested\ncomment, which really serves no purpose*//*I am bound /*to*/ FAIL!*/Podría tener sentido si tiene comentarios de una sola línea y código dentro de un comentario de varias líneas, como una función con documentación que no desea que las personas usen, pero tampoco desea eliminarlo del archivo.
Chinoto Vokro
17
Usando:
= comenzar
Esta
es
una
comentario
bloquear
= fin
o
# Esta
# es
# una
# comentario
# bloque
son los dos únicos actualmente soportados por rdoc, lo cual es una buena razón para usar solo estos, creo.
Otra buena razón para seguir =begino #es que ambas <<-DOCy las "sintaxis generarán literales de cadena inútiles en la ejecución.
Cœur
13
=begin(some code here)=end
y
# This code# on multiple lines# is commented out
Son ambos correctos. La ventaja del primer tipo de comentario es la editabilidad: es más fácil descomentar porque se eliminan menos caracteres. La ventaja del segundo tipo de comentario es la legibilidad: al leer el código línea por línea, es mucho más fácil saber que una línea en particular ha sido comentada. Tu llamada, pero piensa en quién vendrá después de ti y qué tan fácil es para ellos leer y mantener.
Tampoco "/ *" y "* /" en Java, C y C ++. Al igual que con la sintaxis de Ruby, se pueden comentar grandes bloques de código entre esos dos caracteres, y todos los que conocen los conceptos básicos del lenguaje saben lo que significan.
La-comadreja
1
La coloración de sintaxis (en vim, por ejemplo) muestra que el primer tipo es un comentario. En ese caso, el primer tipo no tiene desventajas.
Camille Goudeseune
12
Aquí hay un ejemplo :
=begin
print "Give me a number:"
number = gets.chomp.to_f
total = number *10
puts "The total value is : #{total}"=end
Todo lo que coloques en el medio =beginy =endserá tratado como un comentario, independientemente de cuántas líneas de código contenga.
Nota: Asegúrese de que no haya espacio entre =y begin:
En caso de que alguien esté buscando una manera de comentar varias líneas en una plantilla html en Ruby on Rails, podría haber un problema con = begin = end, por ejemplo:
<%=begin%>... multiple HTML lines to comment out
<%= image_tag("image.jpg")%><%=end%>
fallará debido a que%> cierra la etiqueta_imagen.
En este caso, tal vez sea discutible si esto está comentando o no, pero prefiero encerrar la sección no deseada con un bloque "si es falso":
<%iffalse%>... multiple HTML lines to comment out
<%= image_tag("image.jpg")%><%end%>
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
Tenga en cuenta que en el momento de la publicación, el motor de stackoverflow no representa la coloración de sintaxis correctamente. Probar cómo se muestra en el editor de su elección se deja como un ejercicio. ;)
.pp
/**/
Respuestas:
fuente
#
sobre todos ellos, principalmente porque separa visualmente las líneas comentadas mejor que=begin
/=end
o usando el método here-to. Y buen trabajo.=begin
y=end
no puede ser precedido por ningún espacio en blanco.=begin...=end
y el último bloque que#
se usa al generar la documentación.fuente
#
espacio antes de cada línea? Son muchas pulsaciones de teclas, especialmente si empiezo a agregar saltos de línea.A pesar de la existencia de
=begin
y=end
, la forma normal y más correcta de comentar es usar#
's en cada línea. Si lee la fuente de cualquier biblioteca de ruby, verá que esta es la forma en que se hacen comentarios de varias líneas en casi todos los casos.fuente
#
porque es más obvio. Al comentar el código, es importante que sea obvio que eso es lo que sucedió. Si está viendo el código sin el beneficio de colorear el código en un editor,=begin/=end
puede ser difícil descubrir por qué se ignora el código.#
comentarios. (Estoy desconcertado por qué esto tuvo dos votos negativos. ¡Supongo que la comunidad de Stack Overflow tiene que equivocarse a veces!)3 == three
dondedef three; 1 + 1 + 1 end
. Por lo tanto, ambos son válidos. ¿A quien le importa? Uso3
!vi
un servidor de producción. En ese caso, probablemente no deberías estar haciendo tu desarrollo allí, de todos modos.fuente
/*I am a\n#nested\ncomment, which really serves no purpose*/
/*I am bound /*to*/ FAIL!*/
Podría tener sentido si tiene comentarios de una sola línea y código dentro de un comentario de varias líneas, como una función con documentación que no desea que las personas usen, pero tampoco desea eliminarlo del archivo.Usando:
o
son los dos únicos actualmente soportados por rdoc, lo cual es una buena razón para usar solo estos, creo.
fuente
=begin
o#
es que ambas<<-DOC
y las"
sintaxis generarán literales de cadena inútiles en la ejecución.y
Son ambos correctos. La ventaja del primer tipo de comentario es la editabilidad: es más fácil descomentar porque se eliminan menos caracteres. La ventaja del segundo tipo de comentario es la legibilidad: al leer el código línea por línea, es mucho más fácil saber que una línea en particular ha sido comentada. Tu llamada, pero piensa en quién vendrá después de ti y qué tan fácil es para ellos leer y mantener.
fuente
=begin
y=end
no transmite visualmente que lo que está en el medio es un comentario ... Clojure, por ejemplo, usa lo(comment :whatever)
que en el plomo dice lo que significa: stackoverflow.com/questions/1191628/block-comments-in-clojureAquí hay un ejemplo :
Todo lo que coloques en el medio
=begin
y=end
será tratado como un comentario, independientemente de cuántas líneas de código contenga.Nota: Asegúrese de que no haya espacio entre
=
ybegin
:=begin
= begin
fuente
=begin comment line 1 comment line 2 =end
asegúrese de que = begin y = end es lo primero en esa línea (sin espacios)fuente
En caso de que alguien esté buscando una manera de comentar varias líneas en una plantilla html en Ruby on Rails, podría haber un problema con = begin = end, por ejemplo:
fallará debido a que%> cierra la etiqueta_imagen.
En este caso, tal vez sea discutible si esto está comentando o no, pero prefiero encerrar la sección no deseada con un bloque "si es falso":
Esto funcionará
fuente
Tenga en cuenta que en el momento de la publicación, el motor de stackoverflow no representa la coloración de sintaxis correctamente. Probar cómo se muestra en el editor de su elección se deja como un ejercicio. ;)
fuente