2010-07-20 15 views

Respuesta

11

Rubí son más o menos lo mismo, con cambios menores, y vienen en 2 sabores:

1) al final de la heredoc debe estar en el inicio de una línea:

string = <<EOD 

    ',. whatever <"",' 

EOD 

puts string 

2) al final de la heredoc puede ir precedido por espacios en blanco:

string = <<-EOD 

    ',. whatever <"",' 

     EOD 

puts string 
3

Se llama heredoc, y es <<WHATEVER en Ruby.

10

Esto se llama here doc. Desde el enlace, la forma de rubí sería:

puts <<-GROCERY_LIST 
Grocery list 
------------ 
1. Salad mix. 
2. Strawberries.* 
3. Cereal. 
4. Milk.* 

* Organic 
GROCERY_LIST 

El resultado:

$ ruby grocery-list.rb 
Grocery list 
------------ 
1. Salad mix. 
2. Strawberries.* 
3. Cereal. 
4. Milk.* 

* Organic 
10

Rubí soporta líneas múltiples proporcionando dos tipos de sintaxis doc aquí. La primera sintaxis se usa y dash adicional, pero le permite sangrar el delimitador "end of here doc" ('eos' en el ejemplo).

<<-eos 
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum. 

eos 

Otra sintaxis de documento no exige que use el tablero, pero sí requiere que el "final de aquí doc" delimitador está en la columna 1 (o no hay espacios que le preceden).

heredocs
<<eos 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum. 
eos 
2

que puede hacerlo de esta manera

string = <<EOD 

',. whatever <"",' 

EOD 

puts string 
1
output = <<-TEXT 
    my text 
    block 
TEXT 

^lo que dijeron