Зарегистрируйте сообщение с переменным количеством аргументов printf-стиля

Таким образом, вы можете безопасно пройти через $PATH с помощью одной петли, в то время как $IFS останется неизменным внутри или снаружи петли.

while IFS=: read -d: -r path; do # `$IFS` is only set for the `read` command
    echo $path
done <<< "${PATH:+"${PATH}:"}"   # append an extra ':' if `$PATH` is set

Вы можете проверить значение $IFS,

IFS='xxxxxxxx'
while IFS=: read -d: -r path; do
    echo "${IFS}${path}"
done <<< "${PATH:+"${PATH}:"}"

, и на выходе будет что-то вроде этого.

xxxxxxxx/usr/local/bin
xxxxxxxx/usr/bin
xxxxxxxx/bin

Ссылка на еще один вопрос о StackExchange .

6
задан Emerick Rogul 6 June 2009 в 01:04
поделиться

3 ответа

static void LogMessage(string format, params object[] args) {
    File.AppendAllText("log.txt", string.Format(format, args));
}

LogMessage("Testing {0} {1}", 1, "hi");
15
ответ дан 8 December 2019 в 04:55
поделиться

Вы хотите создать вариативную функцию

C # использует params , чтобы сделать это

static void LogMessage(string formatString, params string[] formatArguments)
{
    string.Format(formatString, formatArguments);
}

Обратите внимание, что ключевое слово params может использоваться только с параметром last в сигнатуре метода и требует, чтобы параметр был массивом .

Это просто синтаксический сахар для фактической передачи массива.

9
ответ дан 8 December 2019 в 04:55
поделиться
static void LogMessage(params string [] logList)
{
    for ( int i = 0 ; i < logList.Length ; i++ )
       doLogging(logList[i]);
}
0
ответ дан 8 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: