gpt4 book ai didi

PowerShell - 关于全局变量的问题

转载 作者:行者123 更新时间:2023-12-03 07:59:23 27 4
gpt4 key购买 nike

我想知道为什么我的一些变量可以工作,尽管它们没有声明为全局变量举个例子:

Function B {
#Some code..

if ($var1 -eq 'true') {
Do something
}
}

Function A {
$var1 = 'false'
$var2 = 'false'

#Some code..
if ($a -eq "1") {
$var1 = 'true'
}
#Call function B
Function B
}

我的代码中有更多函数,但我们不会公开变量,除非我这样做:所以我想知道为什么在上面的情况下它起作用。我有很多情况,如果不将变量声明为全局变量,它就无法工作

Set-Variable -Name "varname" -Value $varname -Scope global

当函数 A 中 $var1 发生变化时,函数 B 如何获取 $var1 的变化?

最佳答案

about_Scopes 中所述:

  • An item is visible in the scope in which it was created and in any child scopes, unless you explicitly make it private.

$var1 是在 A 范围内定义的变量,并且 B 是从同一范围调用的,因此 $ var1 也可用于 B

简化您的示例:

function B {
$var1
}

function A {
$var1 = 'hello'
B
}

A # => 'hello'

但是,如文档中所述,如果您希望 $var1 仅可供 A 使用,您可以将其设为 $private: :

function B {
$var1
}

function A {
$private:var1 = 'hello'
B
}

A # => NULL

关于PowerShell - 关于全局变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74904517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com