, değiştirdiğiniz hashtable içeriği böylece işlevinizi (veya işlev ve global kapsamı arasında bir işlev arayan) $ $ Var1 ve $ Var2 (BTWeksik değilsiniz var olduğu sürece) sürece global kullanmanıza gerek yoktur). Eğer bu sizin kendi kodunuzsa, o zaman olduğu gibi bırakın. Ancak, kodunuzun diğer kişilerin kodlarının işlevinizi çağırmasına izin verirseniz, genel değişkene eriştiğinizden ve işlevinizi çağıran bir işlev içinde aynı adda bir değişkene yanlışlıkla erişmediğinizden emin olmak için $global:Var1
belirtecini kullanırdım .
PowerShell içinde dinamik kapsama alınması hakkında bilmek başka bir şey olduğunu bir fonksiyonun içinde değişkene bir değer atamak ve bu değişken küresel bir örneğin olur zaman:
$someGlobal = 7
function foo { $someGlobal = 42; $someGlobal }
foo
$someGlobal
PowerShell bir "kopya-on yapacak -write "işlevinde $ someGlobal değişkeninde işlem. Eğer niyet gerçekten sonra küresel değiştirmek olan varsa $global:
belirtici kullanırsınız:
$someGlobal = 7
function foo { $global:someGlobal = 42; $someGlobal }
foo
$someGlobal
size Keith ederiz (benim yazım hatası değişti)! Tam olarak kafa karıştırıcı olan şey: diziler ve karmaşıklar (başka ne?) $ Global kullanmadan bir işlev içinde değiştirilebilir: ancak normal değişkenler yapamaz. – gooly
Temel olarak, başvurulan bir nesnenin içeriğini değiştirebilirsiniz (bir nesnenin özellikleri, bir dizideki öğeler, hashtabdaki öğeler). 'Global olarak kullanmadan değiştiremediğiniz şeyler: ', değişken başvuruların asıl nesnesidir (array/hashtable). –