Я пытаюсь перевернуть строку, чтобы это 'abc defg hij'
стало 'jih gfed cba'
. Решение, которое я придумал,
join(reverse(split(l:text, '.\zs')), '')
Есть ли более элегантное решение или я должен придерживаться того, что придумал?
1
Это зависит от того, что вы подразумеваете под «элегантным». Нет внутренней функции, предназначенной для обращения строки, если это то, что вы спрашиваете. Если вы имеете в виду сделать это с двумя или менее вызовами внутренних функций и без дополнительных операторов, то это тоже не представляется возможным.
—
Сато Кацура
Ваше текущее решение уже элегантно и идиоматично.
—
romainl
Пропустить '.' в разделенной части.
—
Кристиан Брабандт
@SatoKatsura на самом деле, я думаю, что это более эффективно, потому что движку регулярных выражений не нужно ничего совпадать. Кроме того, это предпочтительный способ из документации.
—
Кристиан Брабандт
@ChristianBrabandt Согласно инструкции,
—
Сато Кацура
split()
без {keepempty}
опции следует удалить один пустой элемент в начале и один пустой элемент в конце. В настоящее время он удаляет все пустые элементы, включая те, что находятся в середине списка (что более полезно, чем задокументированное поведение, если вы спросите меня, но, вероятно, это не так). Я думаю, что это обсуждалось недавно vim_dev
.