Вывод списков с запятыми

Проблема

Требуется вывести список с неизвестным количеством элементов. Элементы разделяются запятыми, а перед последним элементом выводится слово and.

Решение

Следующая функция возвращает строку, отформатированную требуемым образом:
sub commify_series  {
  (@_ == 0) ? ' '                :
  (@_ == 1) ? $_[0]              :
  (@_ == 2) ? join(" and ",  @_) :
  join (", " , @_[0..($#_-1], "and $_[-1]");
}

Комментарий

При выводе содержимое массива порой выглядит довольно странно:
@аrrау = ("red", "yellow", "green");
print "I have  ", @аггау, " marbles. \n";
print  "I  have @array marbles\n";
I  have  redyellowgreen   marbles.
I  have  red  yellow  green  marbles.
На самом деле вам нужна строка "I have red, yellow, and green marbles". Приведенная выше функция генерирует строку именно в таком формате. Между двумя последними элементами списка вставляется "and". Если в списке больше двух элементов, все они разделяются запятыми.

См. также




2013-09-10 17:05:19

Proverte kod v komentariyah gde pro list tam oshibki detskie




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: