vik*_*ata 1 powershell global-variables
我只是试过这段代码:
$m=2
function f
{
$m=3
}
f
$m
Run Code Online (Sandbox Code Playgroud)
我希望该函数f将更$m改为3。但是实际输出仍然是2。为什么?$m是全局变量,在内部不有效f吗?
不,恐怕PowerShell并非以这种方式设计。您必须进行思考scopes,有关本主题的更多信息,请阅读有关范围的PowerShell帮助或Get-Help about_scopes在PowerShell ISE /控制台中键入。
简短的答案是,如果要更改全局范围内的变量,则应处理全局范围:
$Number = 2
Function Foo {
$Global:Number = 3
}
Foo
$Number
Run Code Online (Sandbox Code Playgroud)
Function除非您明确将其定义为Script或,否则在函数内部创建的所有变量均不可见Global。最佳实践是将函数的结果保存在另一个变量中,因此可以在脚本作用域中使用它:
$Number = 5
Function Foo {
$Number * 10
}
$Result = Foo
# Now you can use the value outside the function:
"The result of the function was '$Result'"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
774 次 |
| 最近记录: |