Метод to_s, возвращающий нежелательный "\"
Я написал метод, который принимает массив чисел, добавляет к нему число 2, а затем возвращает массив строк.
def add_two(array)
new_array = array.map{|x| "#{x} + 2 = #{x + 2}"}
new_array.to_s
end
Ниже приведен результат теста:
У меня есть нежелательный \
в моем возвращении. Я пытаюсь выяснить, где \
идет от. Может ли кто-нибудь указать мне правильное направление?
2 ответа
Решение
Это исходит от to_s
что у вас есть в конце. Вы преобразуете массив строк (который, по-видимому, уже соответствует вашему желанию) в одну строку, содержащую двойные кавычки (которые должны быть экранированы \
). Чтобы это исправить, просто удалите строку с to_s
,
Это не добавление дополнительных \
s. \
побег персонаж, чтобы убежать "
которая является частью результата String. Вот:
a = add_two(array)
# => "[\"1 + 2 = 3\", \"2 + 2 = 4\", \"3 + 2 = 5\"]"
puts a
# ["1 + 2 = 3", "2 + 2 = 4", "3 + 2 = 5"]
или напрямую:
puts add_two(array)
# ["1 + 2 = 3", "2 + 2 = 4", "3 + 2 = 5"]