Ruby'de tek ''
ve çift tırnaklar ""
arasında bir karakter dizisine neyin değerlendirileceğine dair bir fark vardır.
Başlangıçta, tek bir dize ya da çift tırnak arasındaki her ne olursa olsun Ruby String sınıfının bir örneği olan bir dize nesnesi olarak değerlendirilir bir dizenin gerçek biçiminde açıklığa kavuşturmak istiyorum .
Bu nedenle, 'stackoverflow'
ve "stackoverflow"
her ikisi de hiçbir fark olmadan String sınıfı örneklerini değerlendirecektir .
Fark
Dizelerin iki değişmez formu (tek veya çift tırnaklar) arasındaki temel fark , çift tırnakların tek tırnakların kaçmamasına rağmen kaçış dizilerine izin vermesidir!
Değişmezi tek tırnak yarattığı bir dize desteklemez dize interpollation ve dizileri kaçış yok.
Temiz bir örnek:
"\n" # will be interpreted as a new line
buna karşılık
'\n' # will display the actual escape sequence to the user
Tek tırnak işaretleri ile enterpolasyon yapmak işe yaramıyor:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
En iyi pratik
Ruby Linter'lerin çoğu, dizeleriniz için tek tırnak harfleri kullanmanızı ve enterpolasyon / kaçma dizileri durumunda çift tırnaklar için önerdiğinden .