2012-10-31 19 views
11

Quindi seguo questo tutorial di Ruby: Learn Ruby the Hard Way.Ruby - qual è la differenza tra virgolette singole e doppie?

Nell'esercizio 16 (collegato sopra), si scrive uno script che scrive le righe in un file. Il codice di riferimento è:

print "line 1: "; line1 = STDIN.gets.chomp() 
print "line 2: "; line2 = STDIN.gets.chomp() 
print "line 3: "; line3 = STDIN.gets.chomp() 

puts "I'm going to write these to the file." 

target.write(line1) 
target.write("\n") 
target.write(line2) 
target.write("\n") 
target.write(line3) 
target.write("\n") 

Tuttavia, essendo il pigro che io sono, ho inizialmente digitato nell'esempio utilizzando apici negli ultimi sei linee, al posto delle virgolette il tutorial dice l'uso.

Ciò ha avuto un effetto sul file. Quando ho usato le virgolette singole, il file si presentava così:

this is line 1\nthis is line 2\nthis is line 3 

Dopo il passaggio quelle citazioni di virgolette, il file sembrava come previsto:

this is line 1 
this is line 2 
this is line 3 

Qualcuno mi può dire esattamente perché? Le stringhe con quotatura singola ignorano semplicemente i caratteri di escape come \n o \t?

+0

Sì, sei corretto –

+0

* Davvero * le persone pigre non digitano il codice, si copia/incolla. :) –

+1

Sono sorpreso che un tutorial che ha l'apertura di file e la scrittura su di essi non avrebbe preso il tempo da qualche parte lungo la strada per spiegare come funziona una stringa. –

risposta

16

Sì, le stringhe con quotatura singola non elaborano i codici di escape ASCII e non eseguono l'interpolazione delle stringhe.

name = 'Joe' 
greeting = 'Hello, #{name}' # this won't produce "Hello, Joe" 
Problemi correlati