2013-05-24 17 views
5

bir dizi Interpolating, bu tırnak '\ "', nasıl tırnak sans bunu interpole ki?Yakut, ben bir dize dizisi interpole zaman Strings

string_array = ["a","b","c"] 
p "#{string_array}"  # => "[\"a\", \"b\", \"c\"]" 
+1

Kullan '? "Sans quotes" nedir? – squiguy

+1

@squiguy: String enterpolasyonu, dizideki 'to_s 'kelimesini çağırır, dolayısıyla aynı sonuca sahip olur. "Sans alıntılar" tırnak işaretleri olmadan anlamına gelir. – messick

+0

Onun durumu karışıklık, ters eğik çizgi var nedenidir, çünkü string_array değil, bir dize incelemek istedi. Bir dize ve dizi için .inspect yöntemi farklıdır. (Sanırım) – Senjai

cevap

3

puts "#{string_array}".inspect

Reme aynıdır mber (sizin durumda, bir ipe p denir) aynıdır

object.inspect dediği gibi p nesne aynı çünkü:

bir dizi
puts string_array.to_s.inspect 

(to_s hep denir olduğunda dize olmak için bir şey sordu (yazdırılacak ve neyi).

Yani dizinin kendisi değil, dizi tarafından döndürülen dizgiyi denetliyorsunuz. Sadece [, "c" "a", "b"] bunu yol yazdırmak istiyorsa

birlikte dizideki tüm dizeleri katılmak istiyorsanız p string_array değil p "#{string_array}"

kullanmak olur Bunu yapmak için String # join kullanırsınız. Örneğin. ben bir virgül ve her değer arasındaki boşluk koymak istiyorsa, Messick gibi ben kullanırım:

Bu olur
puts string_array.join(", ") 

çıktı: to_s` yerine "a, b, c"

+0

DOH! Bu detaylı yanıt için teşekkürler. p çağrılarını tamamen unuttu. şerefe! – user1297102

+0

NP! Memnun olurum, memnun olursanız cevabı kabul etmeyi unutmayın! – Senjai

2

Sen join gerek için çıkış karakterleri içerir p "#{string_array}" kullanılarak dizi elemanları.

["a","b","c"].join(', ')

İlgili konular