Istnieje różnica między pojedynczymi ''
i podwójnymi cudzysłowami""
w Rubim pod względem tego, co ma zostać ocenione jako łańcuch.
Na początku chciałbym wyjaśnić, że w dosłownej formie łańcucha cokolwiek znajduje się między pojedynczym a podwójnym cudzysłowami, jest oceniane jako obiekt typu string, który jest instancją klasy Ruby String.
W związku z tym, 'stackoverflow'
i "stackoverflow"
zarówno oceni instancje klasy String z żadnej różnicy .
Różnica
Zasadnicza różnica między dwoma literalnymi formami łańcuchów (apostrofami lub cudzysłowami) polega na tym, że cudzysłowy podwójne pozwalają na sekwencje specjalne, podczas gdy apostrofy nie!
Literał tekstowy utworzony za pomocą apostrofów nie obsługuje interpolacji ciągów i nie powoduje zmiany znaczenia sekwencji.
Zgrabnym przykładem jest:
"\n" # will be interpreted as a new line
natomiast
'\n' # will display the actual escape sequence to the user
Interpolacja z pojedynczymi cudzysłowami w ogóle nie działa:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
Najlepsze praktyki
Jak sugeruje większość Ruby Linters, używaj pojedynczych cudzysłowów dla swoich ciągów znaków i idź na podwójne w przypadku sekwencji interpolacji / ucieczki.