0
我只是尝试这样的代码:全局变量的函数改变没有效果
$m=2
function f
{
$m=3
}
f
$m
我预计功能f
会改变$m
到3但实际产出仍2.为什么? $m
是一个全局变量,是不是在f
里面有效?
我只是尝试这样的代码:全局变量的函数改变没有效果
$m=2
function f
{
$m=3
}
f
$m
我预计功能f
会改变$m
到3但实际产出仍2.为什么? $m
是一个全局变量,是不是在f
里面有效?
不,我怕PowerShell不是那样设计的。你必须考虑在scopes
,关于这个主题的更多信息,请阅读PowerShell的帮助about scopes。
键入这在你的PowerShell ISE /控制台:
help about_Scopes
简短的回答是,如果你想改变一个变量,它是在全球范围内,你应该解决全球范围内:
$m=2
function f
{
$Global:m=3
}
f
$m
除非您明确将其定义为Script
或Global
,否则在Function
内创建的所有变量在函数外部都是不可见的。最佳做法是将结果的某个功能保存在另一个变量中,以便您可以在脚本范围内使用它:
$Number = 5
Function Foo {
$Number * 10
}
$Result = Foo
# Now you can use the value outside the function:
"The result of the function was '$Result'"