我有全局变量,想在函数中使用它们。
我没有在函数中使用相同名称的局部变量!
# Global variables:
$Var1 = @{ .. }
$Var2 = @( .. )
function testing{
$Var1.keyX = "kjhkjh"
$Var2[2] = 6.89768
}
我这样做,它的工作,但它是安全的,还是我必须使用以下?
$Global:Var1.keyX = "kjhkjh"
在你的函数中,你正在修改哈希表的内容,所以没有必要使用$global,除非你的函数(或你的函数和全局作用域之间的函数调用者)恰好有局部变量$Var1和$Var2(顺便说一句,你不是缺少$
)。如果这都是你自己的代码,那么我建议保持原样。然而,如果你的代码允许其他人的代码调用你的函数,那么我会使用$global:Var1
说明符来确保你访问的是全局变量,而不是无意中访问调用你的函数的函数中同名的变量。
$someGlobal = 7
function foo { $someGlobal = 42; $someGlobal }
foo
$someGlobal
PowerShell将对函数中的变量$someGlobal执行"copy-on-write"操作。如果你真的想修改全局变量,那么你可以使用$global:
说明符:
$someGlobal = 7
function foo { $global:someGlobal = 42; $someGlobal }
foo
$someGlobal