Когда я интерполировать массив строк, она включает в себя символы, спасай кавычки «\"», как бы я интерполировать его без кавычек?рубин, Интерполирующие массив строк
string_array = ["a","b","c"]
p "#{string_array}" # => "[\"a\", \"b\", \"c\"]"
Когда я интерполировать массив строк, она включает в себя символы, спасай кавычки «\"», как бы я интерполировать его без кавычек?рубин, Интерполирующие массив строк
string_array = ["a","b","c"]
p "#{string_array}" # => "[\"a\", \"b\", \"c\"]"
с использованием p "#{string_array}"
такое же, как puts "#{string_array}".inspect
REME mber, потому что р объект такой же, как ставит object.inspect
, который так же, как (в вашем случае, вы назвали р на строку):
puts string_array.to_s.inspect
(to_s всегда вызывается всякий раз, когда массив попросил что-то стать строкой (чтобы быть напечатанной и еще что-то).
Итак, вы фактически проверяете строку, которая была возвращена массивом, а не сам массив.
Если вы просто хотите распечатать [ «а», «б», «в»] способ сделать что бы использовать p string_array
не p "#{string_array}"
, если вы хотите, чтобы объединить все строки в массиве вместе , вы должны использовать String # join для этого. Например. если я хотел поставить запятую и пробел между каждым значением, как Мессик, я хотел бы использовать:
puts string_array.join(", ")
Это будет вывод: «а, б, в»
DOH! спасибо за этот подробный ответ. полностью забыл p звонки проверяют. ура! – user1297102
NP! Рад, что я мог бы помочь, не забудьте принять ответ, если вы удовлетворены! – Senjai
Вы должны join
элементы массива.
["a","b","c"].join(', ')
Используйте 'to_s' вместо? Что такое «без цитирования»? – squiguy
@squiguy: Строковая интерполяция просто вызывает 'to_s' в массиве, поэтому он имеет тот же результат. «Без цитирования» означает без кавычек. – messick
В его случае messick, причина, по которой происходит обратная косая черта, заключается в том, что он вызвал проверку на строку, а не на string_array. Метод .inspect для строки и массива отличается. (Я думаю) – Senjai