Содержание массива соединения в 'английский список'

Мне нравится присоединяться к массиву, приводящему к 'английскому списку'. Например, ['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

Но я задавался вопросом, существует ли там некоторый 'усовершенствованный' метод соединения для достижения этого поведения? Или по крайней мере некоторый более короткий/более хороший код?

18
задан Veger 10 January 2010 в 21:52
поделиться

2 ответа

У меня была та же проблема при входе в удаленные (debian) системы. Поскольку ускользнувшие значения в .bashrc все были красиво заключены в скобки, я погуглил и обнаружил, что причиной могут быть различия в размере окна в локальной и удаленной системе. Добавление

shopt -s checkwinsize

в .bashrc на удаленных системах устранило проблему для меня.

Источник: http://forums.macosxhints.com/showthread.php?t=17068

-121--3928194-

Это ANSI SQL, поддерживаемый oracle начиная с версии 9i

SELECT *
FROM   x
WHERE  EXTRACT(YEAR  FROM wedding) = 2008
AND    EXTRACT(MONTH FROM wedding) =   06

Классическое решение со специфическим для oracle TO _ CHAR () :

SELECT *
FROM   x
WHERE  TO_CHAR(wedding, 'YYYY-MMM') = '2008-JUN'

(последние решения поддерживались, когда динозавры все еще ходили по земле)

-121--2934065-

Такой метод не существует в ядре Ruby.

Он был реализован в библиотеке активной поддержки Rails, хотя:

['one', 'two', 'three'].to_sentence
#=> "one, two, and three"

Разделители настраиваются и по умолчанию также используют I18n Rails.

Если вы используете ActiveSupport или Rails, это будет предпочтительным способом. Если ваше приложение не Railsy, ваша реализация кажется подходящей только для английских целей.

43
ответ дан 30 November 2019 в 06:22
поделиться

Просто как намек на читабельность. Вы можете написать

array[0...-1] 

для выбора всех элементов, кроме последнего.

Правка, обновил пример кода предложением Ника.

8
ответ дан 30 November 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: