2012-10-31 9 views
11

Więc podążam za tutorialem Ruby: Learn Ruby the Hard Way.Ruby - jaka jest różnica między pojedynczym a podwójnym cudzysłowem?

W ćwiczeniu 16 (połączonym powyżej), piszesz skrypt, który zapisuje linie do pliku. Odpowiedni kod jest:

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") 

Jednakże, będąc leniwy bum, że jestem, pierwotnie wpisany na przykład za pomocą apostrofów w ciągu ostatnich sześciu linii, zamiast cudzysłowach samouczek mówi do użycia.

To miało wpływ na plik. Kiedy stosować apostrofów plik wyglądał następująco:

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

Po włączeniu tych cytatów do podwójnych cudzysłowów, plik wyglądał zgodnie z oczekiwaniami:

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

Czy ktoś może mi powiedzieć dokładnie, dlaczego tak jest? Czy ciągi o pojedynczych cudzysłowach po prostu ignorują znaki specjalne, takie jak \n lub \t?

+0

Tak, masz rację –

+0

* Naprawdę * leniwi ludzie nie wpisują kodu, kopiują/wklejają. :) –

+1

Jestem zaskoczony, że samouczek, w którym otwierasz pliki i piszesz do nich, nie zabrałby czasu gdzieś po drodze, żeby wyjaśnić działanie łańcucha. –

Odpowiedz

16

Tak, ciągi z jednym cudzysłowem nie przetwarzają kodów ucieczki ASCII i nie stosują interpolacji ciągów znaków.

name = 'Joe' 
greeting = 'Hello, #{name}' # this won't produce "Hello, Joe" 
Powiązane problemy