Сгладить массив строк в Ruby

Какой лучший идиоматический (самый чистый) способ преобразования массива строк в строку, сохраняя приложенные кавычки для каждого элемента.
Другими словами, из этого:

a = ["file 1.txt", "file 2.txt", "file 3.txt"]

Мне нужно будет это

"'file 1.txt' 'file 2.txt' 'file 3.txt'"

Здесь можно поменять местами одиночные и двойные кавычки. Лучшие способы, о которых я знаю, - это использовать карту и ввести/уменьшить.

например: a.map{|dir| "'" + dir + "'"}.join(' ')
eg2: a.reduce("'"){|acc, dir| acc += dir+"' "}

Производительность может быть улучшена за счет исключения создания строки temp (+ operator). Это не мой главный вопрос. Есть ли более чистый более сжатый способ достижения такого же результата?

Ответы

Ответ 1

Более короткий не всегда означает более простой. Ваш первый пример был кратким, удобочитаемым и легко изменяемым, без излишне сложного.

a.map { |s| "'#{s}'" }.join(' ')

Ответ 2

Попробуйте

"'#{a.join("' '")}'"

Или, если игра в гольф

?'+a*"' '"+?'

Ответ 3

Попробуйте следующее:

"'" + a.join("' '") + "'"

Ответ 4

"'"+a*"' '"+"'"

или

"'#{a*"' '"}'"

или

a.to_s[1...-1].gsub /",?/,"'"