2010-10-17 23 views
61

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, ¿puede utilizar puntos y comas en Ruby?¿Se puede usar punto y coma en Ruby?

¡Gracias de antemano!

+0

Y a la gente de Ruby: ¿Debería uno usar punto y coma? ¿Hay algún beneficio al hacerlo? Sé que cuando escribo el código de Ruby, los agrego reflexivamente. –

+0

@Andy No use puntos y comas, a menos que desee agregar varias instrucciones en una línea, lo cual [debe evitar hacer de todos modos] (http://www.caliban.org/ruby/rubyguide.shtml#semicolon). –

+0

@Yaser: Necesito punto y coma.Porque cuando hay una función en una línea sin punto y coma, vim me autoinderte, lo cual no quiero que suceda. –

Respuesta

85

Sí.

Ruby no requiere que usemos ningún carácter para separar los comandos, a menos que queramos encadenar varias instrucciones 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

+1

¡Increíble, gracias! –

+0

, pero ¿debería usar punto y coma? – rocketspacer

1

Sí, los puntos y comas se pueden usar como separadores de instrucciones en Ruby.

Aunque mi estilo típico (y más código veo) pone una línea de código en cada línea, por lo que el uso de ; es bastante innecesario.

26

Como nota al margen, es útil usar puntos y comas en su (j) sesión de IRB para evitar la impresión de un valor de expresión ridículamente larga, 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 sobre todo para sus llamadas MyBigORMObject.find_all.

2

La única situación en la que me he encontrado con que el punto y coma es útil es cuando se declaran los métodos de alias para attr_reader.

Considere 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 

Mediante el uso de punto y coma podemos reducir esta abajo de 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 realmente no le quita a la legibilidad.

3

Punto y coma: 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 varios 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 
0

Puede ser interesante utilizar 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 } 

Mantiene una línea de código.

Cuestiones relacionadas