simbolo - ruby puts hash
¿Puedes usar punto y coma en Ruby? (6)
Sí, los puntos y comas se pueden usar como separadores de declaraciones en Ruby.
Aunque mi estilo típico (y la mayoría del código que veo) pone una línea de código en cada línea, entonces el uso de ;
es bastante innecesario
Al aprender Ruby, noté que en todos los ejemplos no hay punto y coma. Soy consciente de que esto está perfectamente bien siempre y cuando cada declaración esté en su propia línea. Pero lo que me pregunto es, ¿ puedes usar punto y coma en Ruby?
¡Gracias por adelantado!
Sí.
Ruby no requiere que usemos ningún carácter para separar los comandos, a menos que queramos encadenar múltiples declaraciones juntas en una sola línea. En este caso, se usa un punto y coma (;) como separador.
Fuente: http://articles.sitepoint.com/article/learn-ruby-on-rails/2
Como nota al margen, es útil usar punto y coma en tu (j) sesión IRB para evitar imprimir un valor de expresión ridículamente largo, por ejemplo
irb[0]> x = (1..1000000000).to_a
[printout out the whole array]
vs
irb[0]> x = (1..100000000).to_a; 1
1
Agradable especialmente para tus llamadas a MyBigORMObject.find_all.
La única situación en la que me he encontrado con que el punto y coma es útil es cuando declaro métodos de alias para attr_reader.
Considera el siguiente código:
attr_reader :property1_enabled
attr_reader :property2_enabled
attr_reader :property3_enabled
alias_method :property1_enabled?, :property1_enabled
alias_method :property2_enabled?, :property2_enabled
alias_method :property3_enabled?, :property3_enabled
Al usar puntos y comas, podemos reducir esto 3 líneas:
attr_reader :property1_enabled; alias_method :property1_enabled?, :property1_enabled
attr_reader :property2_enabled; alias_method :property2_enabled?, :property2_enabled
attr_reader :property3_enabled; alias_method :property3_enabled?, :property3_enabled
Para mí, esto no elimina la legibilidad.
Semicolon: sí.
irb(main):018:0> x = 1; c = 0
=> 0
irb(main):019:0> x
=> 1
irb(main):020:0> c
=> 0
Incluso puede ejecutar múltiples comandos separados por punto y coma en un bucle de una sola línea
irb(main):021:0> (c += x; x += 1) while x < 10
=> nil
irb(main):022:0> x
=> 10
irb(main):023:0> c
=> 45
Puede ser interesante usar punto y coma para preservar la sintaxis del bloque como en este ejemplo:
a = [2, 3 , 1, 2, 3].reduce(Hash.new(0)) { |h, num| h[num] += 1; h }
Usted mantiene una línea de código.