История изменений
Исправление
geekless,
(текущая версия)
:
[(value.rjust, value.ljust)[align_left==True](size) for (value, size, align_left) in map(None, row, col_size, [True, True])]
Оригинально, но по-прежнему читабельно с трудом. По сути интересное упражнение на тему «как бороться с языком чтобы делать то, для чего он не предназначен».
Чисто ради интереса я переписал свой алгоритм слово в слово на Io.
col_sizes := data transpose map(map(size) max)
data map(
zip(col_sizes, [true, true]) map([value, size, align_left],
if (align_left, value ljust(size), value rjust(size))
) join(" | ")
) join("\n") print
(На самом деле, там из коробки нет transpose и zip, а map нас не поймёт, если вот так передавать список имён: [value, size, align_left]. Но предположим, что у нас Io с блэкджеком и более фичастой стандартной библиотекой.)
И хотя лаконичность повысилась, читабельность значительно упала. Потому что в руби легко вычленяются отдельные фрагменты-шаблоны, в чем сильно помогают те самые фигурные скобки и «пайпы», от которых так страдает KRoN73. А Io, где любой фрагмент кода может означать что угодно, и всё выглядит одинаково, читать намного труднее.
Исходная версия
geekless,
:
[(value.rjust, value.ljust)[align_left==True](size) for (value, size, align_left) in map(None, row, col_size, [True, True])]
Оригинально, но по-прежнему читабельно с трудом. По сути интересное упражнение на тему «как бороться с языком чтобы делать то, для чего он не предназначен».
Чисто ради интереса я переписал свой алгоритм слово в слово на Io.
col_sizes := data transpose map(map(size) max)
data map(
zip(col_sizes, [true, true]) map([value, size, align_left],
if (align_left, value ljust(size), value rjust(size))
) join(" | ")
) print
(На самом деле, там из коробки нет transpose и zip, а map нас не поймёт, если вот так передавать список имён: [value, size, align_left]. Но предположим, что у нас Io с блэкджеком и более фичастой стандартной библиотекой.)
И хотя лаконичность повысилась, читабельность значительно упала. Потому что в руби легко вычленяются отдельные фрагменты-шаблоны, в чем сильно помогают те самые фигурные скобки и «пайпы», от которых так страдает KRoN73. А Io, где любой фрагмент кода может означать что угодно, и всё выглядит одинаково, читать намного труднее.