[Tcl] Множественные аргументы в format
От: metacoder Россия http://blogmyxa.ru,
Дата: 02.11.09 12:28
Оценка:
В документации к команде format есть следующие строки:

Если за символом "%" следуют целое число и знак "$", как например в "%2$d", то величина для преобразования берется не из следующего аргумента, а из аргумента, занимающего соответствующую позицию в списке ("1" соответствует первому аргументу arg). Если спецификатор преобразования требует нескольких аргументов (когда он содержит символ "*"), то используются последовательные аргументы, начиная с указанного. Если один из спецификаторов содержит указание позиции аргумента, то и все остальные спецификаторы должны его содержать.


пруфлинк

Так вот собственно более никаких пояснений и примеров насчет этих "нескольких аргументов (когда он содержит символ "*")" нигде нет

Вопрос — как заюзать эти множественные параметры?

Собственно строка формата (за исключением некоторых моментов) одинакова для множества языков. Функции только называются по разному. В Си это sprintf, например. Но для нее я тоже объяснения этого момента не нашел.
tcl format
Re: [Tcl] Множественные аргументы в format
От: anonymous Россия http://denis.ibaev.name/
Дата: 03.11.09 08:31
Оценка:
Здравствуйте, metacoder, Вы писали:

M>Так вот собственно более никаких пояснений и примеров насчет этих "нескольких аргументов (когда он содержит символ "*")" нигде нет

M>Вопрос — как заюзать эти множественные параметры?

Пример из Perl, в Си также:
printf('%10s', 'qwerty');
# эквивалентно
printf('%*s', 10, 'qwerty');
Re[2]: [Tcl] Множественные аргументы в format
От: metacoder Россия http://blogmyxa.ru,
Дата: 13.11.09 16:21
Оценка:
Огромное спасибо! Ответ навел меня на правильный путь. Я понял, что символ * может заменять любое числовое поле в строке формата.

format "%*.*f" 20 2 123.456


Подставляет вместо звездочек первый и второй аргументы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.