您好,想想这种情况。您有2个定义如下的Powershell模块。 如果将它们导入控制台(只需在控制台中运行代码),就可以使用变量test,但不能对其进行修改(预期行为)。但是第二个模块中的功能changeVariable不支持只读设置,并且在内部可以通过变量测试执行任何所需的操作。
第一个模块:
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中创建全局不可修改的变量吗?
答案 0 :(得分:1)
第二个模块未从全局范围访问compile "org.apache.spark:spark-core_2.11:2.1.0.cloudera1@jar"
变量。它正在从函数的作用域访问变量。您需要指出它是一个全局变量。一种实现方法是使用$test
范围修饰符。
global
还有其他可以与New-Module {
function changeVariable {
$global:test = "someString" # this should end with error, that variable cannot be changed
$global:test
}
Export-ModuleMember -Function *
}
语法一起使用的范围。参见About Scopes。