Есть ли способ использовать формат, чтобы повторить слово

Я хочу что-то подобное в общих чертах.

(format t "~{-~}" repeat-times)

если значение повтора равно 5, то будет напечатано -----

если количество повторений равно 10, то будет напечатано ----------

Формат существует способ сделать это?

1 ответ

Решение

Да. ~{ обычно повторяется до тех пор, пока остаются аргументы для обработки, но добавление префиксного аргумента ограничит количество итераций. Создание префиксного аргумента v извлечет его из списка аргументов. Добавление @ заставит итерацию использовать остальные аргументы в качестве входных данных.

Поскольку часть между фигурными скобками никогда не использует никаких аргументов, префикс будет определять количество итераций. Однако должен быть хотя бы один аргумент (я произвольно выбрал nil), иначе итерация будет немедленно прекращена.

(format t "~v@{-~}" repeat-times nil)
Другие вопросы по тегам