Метод 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"]
Другие вопросы по тегам