goo*_*oly 9 powershell global-variables
我有全局变量,并希望在函数中使用它们.
我不在函数中使用同名的局部变量!
# Global variables:
$Var1 = @{ .. }
$Var2 = @( .. )
function testing{
$Var1.keyX = "kjhkjh"
$Var2[2] = 6.89768
}
Run Code Online (Sandbox Code Playgroud)
我这样做并且它有效,但是它是安全的还是我必须使用:
$Global:Var1.keyX = "kjhkjh"
Run Code Online (Sandbox Code Playgroud)
谢谢,Gooly
Kei*_*ill 21
在您的函数中,您正在修改哈希表的内容,因此除非您的函数(或函数和全局范围之间的函数调用者)恰好具有局部变量$ Var1和$ Var2(BTW aren'),否则不需要使用$ global.你错过了$).如果这是你自己的代码,那么我会说保持原样.但是,如果您的代码允许其他人的代码调用您的函数,那么我将使用说明$global:Var1符来确保您正在访问全局变量,而不是无意中访问调用您的函数的函数中的同名变量.
关于PowerShell中动态范围的另一件事是,当你为一个函数中的变量赋值并且该变量碰巧是全局的时,例如:
$someGlobal = 7
function foo { $someGlobal = 42; $someGlobal }
foo
$someGlobal
Run Code Online (Sandbox Code Playgroud)
PowerShell将对函数中的变量$ someGlobal执行"copy-on-write"操作.如果您的意图是真正修改全局,那么您将使用说明$global:符:
$someGlobal = 7
function foo { $global:someGlobal = 42; $someGlobal }
foo
$someGlobal
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36672 次 |
| 最近记录: |