Dize nesneleri tutma sıralı diziler genellikle okunabilir metin parçaları oluşturmak için baytlar, tipik olarak karakterler. Tüm programlama dillerinde çok yaygın bir nesne türüdür ve Yakut Dize nesnelerini oluşturmak, erişmek ve değiştirmek için birkaç üst düzey ve birkaç alt düzey yol vardır.
Dizeler çoğunlukla bir Dize değişmez değeri. bir kelimesi kelimesine Ruby dilinde belirli bir türde bir nesne oluşturan özel bir sözdizimidir. Örneğin, 23 oluşturur.Fixnum nesne. String değişmezlerine gelince, birkaç form vardır.
Tek Tırnaklı ve Çift Tırnaklı Dizeler
Çoğu dilde buna benzer bir Dize değişmez değeri vardır, bu yüzden bu tanıdık gelebilir. Tırnak türleri '(tek tırnak, kesme işareti veya zor teklif) ve "(çift tırnak veya yumuşak teklif), dize değişmez değerlerini içine almak için kullanılır, aralarındaki her şey Dize nesnelerine dönüştürülür. Aşağıdaki örnek bunu göstermektedir.
Ancak tek ve çift tırnaklar arasında bazı farklar vardır. Çift tırnak veya yumuşak tırnaklar perde arkasında biraz sihir olmasını sağlayın. En yararlı dizelerin içindeki enterpolasyon, bir değişkenin değerini bir dizenin ortasına eklemek için yararlıdır. Bu,
#{ … } sıra. Aşağıdaki örnek, adınızı yazdırılan dize hazır bilgisine eklemek için enterpolasyon kullanarak adınızı soracak ve selamlayacaktır.Herhangi bir kodun sadece değişken isimlerinin değil, parantez içine girebileceğini unutmayın. Ruby bu kodu değerlendirir ve ne döndürürse onu dizeye eklemeye çalışır. Yani kolayca söyleyebilirsin "Merhaba, # {gets.chomp}" ve unut isim değişken. Ancak, parantez içine uzun ifadeler koymamak iyi bir uygulamadır.
Tek tırnak işaretleri, kesme işaretleri veya sert teklifler çok daha kısıtlayıcı. Tek tırnak içinde Ruby hiçbir enterpolasyon yapmaz veya Kaçış dizileri tek tırnak karakterinden kaçmak ve ters eğik çizgi (\' ve \\ sırasıyla). Enterpolasyon kullanmak istemiyorsanız, tek tırnak işaretlerini kullanmamanız önerilir.
Aşağıdaki örnek, tek tırnak içinde bir değişkeni enterpolasyona sokmaya çalışacaktır.
Bunu çalıştırırsanız hata almazsınız, ancak ne yazdırılır?
İnterpolasyon sekansı yorumlanmamış olarak geçirildi.
Ne zaman tek ve çift tırnak kullanmalıyım
Bu bir stil meselesi. Bazıları rahatsız edici olmadıkça her zaman çift tırnak kullanmayı tercih eder. Diğerleri, enterpolasyon davranışı amaçlanmadığı sürece tek tırnak kullanmayı tercih eder. Doğasında hiçbir şey yok tehlikeli her zaman çift tırnak kullanmakla ilgili, ancak bazı kodların okunmasını kolaylaştırır. İçinde enterpolasyon olmadığını biliyorsanız, kodu okurken bir dize okumanıza gerek yoktur çünkü dizenin kendisinin herhangi bir yan etkisi olmayacağını biliyorsunuz. Hangi dize değişmez formunu kullanmak size kalmış, burada gerçek doğru ve yanlış bir yol yoktur.
Kaçış dizileri
Dize değişmezine bir tırnak karakteri eklemek isterseniz ne olur? Örneğin, dize "Steve," Moo! "Dedi. çalışmaz. Ve hiçbiri `` Buna dokunamıyorum! ''. Bu dizelerin her ikisi de, dizenin içindeki tırnak karakterini içerir ve dizgi değişmezini etkili bir şekilde sonlandırır ve bir sözdizimi hatasına neden olur. Alıntı karakterleri arasında geçiş yapabilirsiniz. Steve, "Moo!" Dedi., ancak bu sorunu gerçekten çözmez. Bunun yerine, dize içindeki herhangi bir alıntı karakterinden kaçabilirsiniz ve özel anlamını kaybedecektir (bu durumda özel anlam, dizeyi kapatmaktır).
Bir karakterden kaçmak için, ters eğik çizgi karakterinin başına ekleyin. Ters eğik çizgi karakteri Ruby'ye bir sonraki karakterin sahip olabileceği herhangi bir özel anlamı göz ardı etmesini söyler. Eşleşen bir alıntı karakteri ise, dizeyi bitirmeyin. Bu bir karma işaretiyse, bir enterpolasyon bloğu başlatmayın. Aşağıdaki örnek, özel karakterlerden kaçmak için ters eğik çizgi kullanımını göstermektedir.
Ters eğik çizgi karakteri, aşağıdaki karakterden herhangi bir özel anlamı kaldırmak için kullanılabilir, ancak kafa karıştırıcı olarak, çift tırnaklı dizelerde özel davranışı belirtmek için de kullanılabilir. Bu özel davranışların çoğu görsel olarak yazılamayan veya temsil edilemeyen karakterler ve bayt dizileri eklemekle ilgilidir. Tüm Dizeler karakter dizeleri değildir veya kullanıcı için değil, terminal için tasarlanmış kontrol dizileri içerebilir. Ruby size ters eğik çizgi kaçış karakterini kullanarak bu tür dizeleri ekleme olanağı verir.
- \ n - Yeni satır karakteri. koyar yöntemi bunu otomatik olarak yapar, ancak bir dizenin ortasına bir tane eklemek isterseniz veya dizgi, koyar yönteminde bunu bir dizeye yeni satır eklemek için kullanabilirsiniz.
- \ t - Bir sekme karakteri. Sekme karakteri imleci (çoğu terminalde) 8'in katına taşır, bu nedenle bu, sekmeli verileri görüntülemek için çok kullanışlıdır. Ancak, bunu yapmanın daha iyi yolları vardır ve sekme karakterini kullanmak biraz arkaik veya hackish olarak kabul edilir.
- \ nnn - 3 sayı izleyen ters eğik çizgi, 3 sekizli basamakla temsil edilen bir ASCII karakterini gösterir. Neden sekizli? Çoğunlukla tarihsel nedenlerden dolayı.
- \ xnn - Ters eğik çizgi, x ve 2 onaltılık basamak. Sekizlik sürümle aynı, sadece onaltılık basamaklarla.
Muhtemelen bunların çoğunu asla kullanmayacaksınız, ancak var olduklarını bileceksiniz. Ayrıca, yalnızca çift tırnaklı dizelerde çalıştıklarını da unutmayın.
Bir sonraki sayfada çok satırlı dizeler ve dizgi değişmezleri için alternatif bir sözdizimi ele alınmaktadır.
Çok Satırlı Dizeler
Çoğu dil çok satırlı dize değişmez değerlerine izin vermez, ancak Ruby izin verir. Dizelerinizi sonlandırmanıza ve bir sonraki satır için daha fazla dizgi eklemenize gerek yoktur, Ruby çok satırlı dize değişmezlerini varsayılan değerle iyi işler sözdizimi.
Alternatif Sözdizimi
Diğer çoğu değişmezde olduğu gibi, Ruby dizgi değişmezleri için alternatif bir sözdizimi sağlar. Örneğin, değişmez değerlerinizin içinde çok fazla alıntı karakter kullanıyorsanız, bu sözdizimini kullanmak isteyebilirsiniz. Bu sözdizimini kullandığınızda bir stil meselesidir, genellikle dizeler için gerekli değildir.
Alternatif sözdizimini kullanmak için, tek tırnaklı dizeler için aşağıdaki sırayı kullanın % q {…}. Benzer şekilde, çift tırnaklı dizeler için aşağıdaki sözdizimini kullanın % Q {…}. Bu alternatif sözdizimi, "normal" kuzenleriyle aynı kuralları izler. Ayrıca, kaşlı ayraçlar yerine istediğiniz karakterleri kullanabileceğinizi unutmayın. Bir küme ayracı, köşeli ayraç, açılı ayraç veya parantez kullanırsanız, eşleşen karakter değişmez değeri sona erdirir. Eşleşen karakterleri kullanmak istemiyorsanız, başka bir sembol kullanabilirsiniz (harf veya sayı olmayan herhangi bir şey). Değişmez değer aynı simgeden bir başkasıyla kapatılacaktır. Aşağıdaki örnekte bu sözdizimini kullanmanın çeşitli yolları gösterilmektedir.
Alternatif sözdizimi de çok satırlı dize olarak çalışır.