Функция powershell выполняется только один раз, когда вызывается несколько раз с условием -и в условии if - PullRequest
2 голосов
/ 20 января 2011

В любом случае в powershell у меня есть следующий скрипт

function ReturnTrue()
{
    write-host "ReturnTrue executed!"
    return $true
}

if (ReturnTrue -and ReturnTrue -and ReturnTrue)
{
    write-host "ReturnTrue should have executed 3 times"
}

Ожидаемый результат: «ReturnTrue выполнено!» напечатано 3 раза, но печатается только один раз. Подобный код в C # или Java мог бы выполнить ReturnTrue () 3 раза. В чем дело?

1 Ответ

6 голосов
/ 21 января 2011

Хорошая ловушка!Вот код с пояснениями в комментариях, и функция также показывает свои аргументы:

function ReturnTrue()
{
    write-host "ReturnTrue executed with $args!"
    return $true
}

# this invokes ReturnTrue once with arguments: -and ReturnTrue -and ReturnTrue
if (ReturnTrue -and ReturnTrue -and ReturnTrue)
{
    write-host "ReturnTrue should have executed 1 time"
}

# this invokes ReturnTrue 3 times
if ((ReturnTrue) -and (ReturnTrue) -and (ReturnTrue))
{
    write-host "ReturnTrue should have executed 3 times"
}

Выход:

ReturnTrue executed with -and ReturnTrue -and ReturnTrue!
ReturnTrue should have executed 1 time
ReturnTrue executed with !
ReturnTrue executed with !
ReturnTrue executed with !
ReturnTrue should have executed 3 times
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...