Можно ли заставить функции из одного модуля соблюдать настройки только для чтения для переменных из другого модуля? - PullRequest
0 голосов
/ 17 мая 2019

Привет, представь себе эту ситуацию. У вас есть 2 модуля powershell, как указано ниже. Если вы импортируете их в консоль (просто запустите код в консоли), вы сможете использовать переменную test, но не изменять ее (ожидаемое поведение). Но функция changeVariable из второго модуля не учитывает настройки только для чтения и внутренне может делать все что угодно с переменной test.

первый модуль:

New-Module {
New-Variable test -Value "test" -Option AllScope, Constant -Force -Scope global

Export-ModuleMember -Variable *
}

второй модуль:

New-Module {
function changeVariable {
    $test = "someString" # this should end with error, that variable cannot be changed 
    $test
}

Export-ModuleMember -Function *
}

Так можно ли создавать глобально неизменяемые переменные в powershell?

1 Ответ

1 голос
/ 17 мая 2019

Второй модуль не обращается к переменной $test из глобальной области видимости.Это доступ к переменной из области видимости функции.Вы должны указать, что это глобальная переменная.Один из способов сделать это - с помощью модификатора области действия global.

New-Module {
function changeVariable {
    $global:test = "someString" # this should end with error, that variable cannot be changed 
    $global:test
}

Export-ModuleMember -Function *

}

Существуют и другие доступные области, которые можно использовать с синтаксисом $[<scope-modifier>:]<name> = <value>.См. Об областях применения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...