Скажем, у меня есть простой объем, который книга состава с Push-Location и Pop-Location:Как автоматически вызывать Pop-Location в конце объема
Function MyFunction($Location)
{
Push-Location $Location
# do other stuff here
Pop-Location
}
Есть ли способ, чтобы установить его в начале области, так что мне не нужно забывать поставить Pop-Location в конце? Что-то вроде этого:
Function MyFunction($Location)
{
Setup-BothPushAndPopHere $Location
# do other stuff here
# at the end of the scope, Pop-Location is automatically called
}
Я думаю, что лично я бы использовал структуру BEGIN {} PROCESS {} END {}. Это только стилистический выбор с моей стороны. – EBGreen
Я использую версию 'try/finally' довольно много. Это намного чище, чем добавление аргумента папки к * каждой * команде, которую я хочу запустить в этой папке. – Eris
@ EBGreen это больше, чем стилистический выбор; это может кардинально изменить выполнение. Может потребоваться нажимать и нажимать на каждый элемент конвейера, который потребовал бы, чтобы все были в блоке 'process'. И в этом случае 'try' /' finally' все еще может быть действительным. Трудно учитывать исключения или прерывания конвейера с этим шаблоном, если 'begin' и' end' имеют смысл для 'push' и' pop'. Это не решительное решение, имо. – briantist