Присоедините содержимое массива в "английский список"
Мне нравится присоединяться к массиву, что приводит к "английскому списку". Например, ['one', 'two', 'three']
должен привести к 'one, two and three'
.
Я написал этот код для его достижения (предполагая, что массив не пуст, что не так в моей ситуации)
if array.length == 1
result = array[0]
else
result = "#{array[0, array.length].join(', ')} and #{array.last}"
end
Но мне было интересно, существует ли какой-то "продвинутый" метод соединения для достижения такого поведения? Или, по крайней мере, более короткий/более удобный код?
Ответы
Ответ 1
Такой метод не существует в ядре Ruby.
реализовано в библиотеке активной поддержки Rails:
['one', 'two', 'three'].to_sentence
#=> "one, two, and three"
Разделители настраиваются, и по умолчанию используется Rails I18n.
Если вы используете ActiveSupport или Rails, это был бы предпочтительный способ сделать это. Если ваше приложение не является Railsy, ваша реализация кажется прекрасной для целей только для английского.
Ответ 2
Так же, как подсказка для удобочитаемости. Вы можете написать
array[0...-1]
чтобы выбрать все, кроме последнего элемента.
Изменить, обновить пример кода с предложением Ника.