我刚试过这段代码:
$m=2
function f
{
$m=3
}
f
$m
我预计函数f
会将$m
更改为3.但实际输出仍为2.为什么? $m
是一个全局变量,在f
内是否有效?
答案 0 :(得分:4)
不,我担心PowerShell不是这样设计的。您必须在scopes
中进行思考,有关此主题的更多信息,请阅读PowerShell帮助about scopes。
在PowerShell ISE / Console中输入:
help about_Scopes
简短的回答是,如果要更改全局范围内的变量,则应该解决全局范围:
$m=2
function f
{
$Global:m=3
}
f
$m
在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'"