2010-09-14 11 views
5

¿Por qué no puedo usar llaves en construcciones if/else? Me fui de Python ya que no me sentía cómodo con sangrar las declaraciones cuidadosamente.¿Puedo usar corchetes en Ruby's if/else?

¿Es esto lo mismo en Ruby también?

Por ejemplo, ¿puedo escribir algo como esto?

if token == "hello" { 
    puts "hello encountered" 
    # lots of lines here 
} 

¿Hay alguna forma de usar llaves para hacer esto? También leo sobre bloques pero no estoy seguro de cómo se pueden usar en las expresiones if/else.

+1

si está teniendo un tiempo duro con formato que puede ser que desee intentar usar un IDE que pueden Autoformato para usted para que lo puede ver cómo deberían verse las cosas al comenzar – dave

+1

@dave necesito echarle otro vistazo .. con aceptación en mente :) – Jeet

+8

Creo que estás cometiendo un error aquí. No puede doblar la sintaxis de un idioma según sus expectativas (al menos no en Ruby). En cambio, tendrá que doblar sus expectativas a la sintaxis de un idioma. Es solo parte de aprender un nuevo idioma. Y si no se siente cómodo con la sangría de su código, use un IDE o editor mejor. Es algo que debes hacer de todos modos, así que no debería ser un problema. – AboutRuby

Respuesta

4

No. Debe utilizar end en lugar de }.

14

No puede usar llaves, pero la sangría tampoco importa. En lugar de un corsé de cierre, Ruby usa la palabra clave end.

if token == "hello" 
    puts "hello encountered" 
    # lots of lines here 
end 

yo todavía recomiendo la sangría con cuidado, sin embargo - mal código sangrado va a engañar a los lectores humanos, incluso si los frenos se utilizan correctamente.

+0

pero se vuelve desordenado para construcciones grandes .. – Jeet

+0

+1 para enfatizar la importancia de la correcta indención sobre las llaves. Raedability es el rey. –

+0

@iAdam: Lo siento, ¿qué se vuelve desordenado para los grandes constructos? – Chuck

12

Esto es lindo:

def my_if(condition, &block) 
    block.call if condition 
end 

uso de la siguiente manera:

my_if(token == "hello") { 
    puts "hello encountered!" 
} 
+0

Para aún más diversión, defina 'if' en' TrueClass' y 'FalseClass' como Smalltalk. – akuhn

Cuestiones relacionadas