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\"]"
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\"]"
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 diziputs 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 olurputs string_array.join(", ")
çıktı: to_s` yerine "a, b, c"
DOH! Bu detaylı yanıt için teşekkürler. p çağrılarını tamamen unuttu. şerefe! – user1297102
NP! Memnun olurum, memnun olursanız cevabı kabul etmeyi unutmayın! – Senjai
Sen join
gerek için çıkış karakterleri içerir p "#{string_array}"
kullanılarak dizi elemanları.
["a","b","c"].join(', ')
Kullan '? "Sans quotes" nedir? – squiguy
@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
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