2015-10-26 14 views
9

Sto cercando di familiarizzare con gli stili di sintassi e di ruby ​​(sono un principiante). Mi sono imbattuto in un codice che utilizza <<-, cosa significa questo in Ruby? Il codice èIl doppio meno di meno il segno "<< -" significa qualcosa in rubino?

def expectation_message(expectation) 
    <<-FE 
     #{expectation.message} 
     #{expectation.stack} 
    FE 
    end 

Questa è solo una parte dell'intero codice. Qualsiasi aiuto sarebbe apprezzato.

+1

E 'la sintassi rubino heredoc. Puoi leggerlo qui: http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or.html –

risposta

6

ci sono vari modi per definire stringa multi linea in Ruby. Questo è uno di loro.

> name = 'John' 
> city = 'Ny' 
> multiline_string = <<-EOS 
> This is the first line 
> My name is #{name}. 
> My city is #{city} city. 
> EOS 
=> "This is the first line\nMy name is John.\nMy city is Ny city.\n" 
> 

il EOS nell'esempio sopra è solo una convenzione, è possibile utilizzare qualsiasi stringa che ti piace e il suo case insensitive. Normalmente il EOS significa End Of String

Inoltre, anche il - (trattino) non è necessario. Tuttavia, consente di rientrare il delimitatore "fine di qui doc". Vedi il seguente esempio per capire le frasi.

2.2.1 :014 > <<EOF 
2.2.1 :015"> My first line without dash 
2.2.1 :016">   EOF 
2.2.1 :017"> EOF 
=> "My first line without dash\n  EOF\n" 


2.2.1 :018 > <<-EOF 
2.2.1 :019"> My first line with dash. This even supports spaces before the ending delimiter. 
2.2.1 :020"> EOF 
=> "My first line with dash. This even supports spaces before the ending delimiter.\n" 
2.2.1 :021 > 

Per maggiori informazioni visita https://cbabhusal.wordpress.com/2015/10/06/ruby-multiline-string-definition/

+1

Nel caso dell'OP il trattino _è necessario (per consentire il marcatore di fine rientrato) –

+2

"tutti supportano l'interpolazione" - non è vero. Le singole stringhe tra virgolette non consentono l'interpolazione. –

+0

ok assicurati di spuntare una delle risposte qui quando hai finito. :) – illusionist

4

<<FE (è possibile sostituire FE con un'altra parola) viene utilizzato per creare stringhe multilinea. <<-FE viene utilizzato per creare stringhe multilinea con spazi bianchi prima della rimozione del marcatore finale.

More info

Problemi correlati