我有全局变量,并希望在函数中使用它们。
我不会在函数中使用同名的局部变量!
# Global variables:
$Var1 = @{ .. }
$Var2 = @( .. )
function testing{
$Var1.keyX = "kjhkjh"
$Var2[2] = 6.89768
}
我这样做了,它是有效的,但它是安全的,还是我必须使用以下方法?
$Global:Var1.keyX = "kjhkjh"
发布于 2014-06-27 04:44:29
在您的函数中,您正在修改哈希表的内容,因此不需要使用$global,除非您的函数(或者您的函数和全局作用域之间的函数调用者)恰好有局部变量$Var1和$Var2 (顺便说一句,您不会缺少$
)。如果这些都是你自己的代码,那么我会说让它保持原样。但是,如果您的代码允许其他人的代码调用您的函数,那么我将使用$global:Var1
说明符来确保您访问的是全局变量,而不是无意中访问调用您的函数的函数中具有相同名称的变量。
关于PowerShell中动态作用域的另一件事是,当你给一个函数中的变量赋值,而这个变量恰好是一个全局变量时,例如:
$someGlobal = 7
function foo { $someGlobal = 42; $someGlobal }
foo
$someGlobal
PowerShell将在函数内的变量$someGlobal上执行“写入时复制”操作。如果您的意图是真正修改全局变量,那么您可以使用$global:
说明符:
$someGlobal = 7
function foo { $global:someGlobal = 42; $someGlobal }
foo
$someGlobal
https://stackoverflow.com/questions/24435745
复制相似问题