我正在使用一个函数,该函数在函数处理后创建了一些我想使用的变量。 我试过直接访问它们,但是我不能。我会如何去做这件事?在函数执行后访问函数内部创建的变量
回答
函数内部的变量在函数运行后无法存活。如果你想在函数处理后访问它们,用一个作用域修饰符作为它们的前缀。
PS> function test-var{ $script:var='foo' }
PS> test-var # excute the function
PS> $var #print var
foo
键入此在控制台的详细资料:
PS> Get-Help about_Scopes
非常感谢! – Sune 2012-01-01 15:45:17
为吉文指出,你可以创建所谓的功能范围,将提供更高的级别范围内的全局变量。然而,全局变量通常不是一个好主意,我想为你提供一些替代方案。
这是从维基百科global variable页:
他们通常被认为是不好的做法,恰恰是因为他们 非局部性的:一个全局变量的原因可能源自 任何地方(除非他们居住在受保护的内存进行修改或者以其他方式 呈现为只读),并且该程序的任何部分都可能取决于它[1]。 因此,全局变量具有创建相互依赖的无限潜力,并且增加相互依赖性增加了复杂性。
一些替代方案:
使函数返回通过呼叫者需要数据。 Powershell函数通常应返回Verb-的名称的Powershell函数naming convention中与名词相关的数据。如果您需要返回与名词不相关的其他数据,请考虑制作第二个函数。
function Get-Directories { param ([string] $Path) # Code to get or create objects here. $dirs = Get-ChildItem -Path $Path | where {$_.PsIsContainer} # Explicitly return data to the caller. return $dirs } $myDirs = Get-Directories -Path 'C:\'
使用reference variable。引用将内存中的变量地址传递给函数。当函数改变变量的数据时,它可以在函数外部访问,但变量的作用域不会被改变。
function Get-Directories { param ([string] $Path, [ref] $Directories) $Directories.Value = Get-ChildItem -Path $Path | where {$_.PsIsContainer} } $myDirs = $null Get-Directories -Path 'C:\' -Directories ([ref] $myDirs)
希望这有助于。快乐编码:-)
谢谢你的回答! – Sune 2012-01-05 22:00:26
如果你运行你的功能。 ,该函数将在您的范围内执行,并且该函数中定义的所有变量都可供调用者使用。
即
. $func
$myPrivateVariable # Now Set in the parent scope.
如果函数是在一个模块中,你也可以用这种伎俩来访问模块的范围:
$m =Get-Module myModule
. $m { $myPrivateModuleVariable }
希望这有助于
谢谢!但是,为什么你在前面用美元符号来运行你的函数呢?像一个变量? – Sune 2012-01-05 22:01:08
因为它是一个样本:-)虽然,你也可以用这种方式处理命令。即$ a = Get-Command Get-Command; &$ a或ScriptBlock:$ a = {$ b = 1}; 。美元; $ b – 2012-01-05 22:07:00
- 1. Maya Python:从内部函数访问外部函数变量
- 2. 如何在函数内访问变量
- 3. 函数外的访问函数变量?
- 4. 在函数内动态创建变量
- 5. 如何访问函数内的变量?
- 6. 不能访问函数内的变量
- 7. 在Angular Promise内部访问外部变量then()函数
- 8. 如何从JavaScript中的内部函数访问外部函数变量?
- 9. 从函数外部访问变量?
- 10. ActionScript从外部访问函数/变量
- 11. Laravel Excel - 访问变量外部函数
- 12. 从外部函数访问变量(PHP)
- 13. 在函数内部访问被重写的全局变量
- 14. 如何访问函数内部声明的变量在python
- 15. Code Quotations:如何在内部访问lambda函数的变量?
- 16. 访问函数中的行变量
- 17. 访问函数内部CDATA
- 18. 如何内部函数变量可以访问使用闭包在javascript中的外部函数变量
- 19. 内部函数变量
- 20. 函数访问变量
- 21. Xposed访问变量函数
- 22. 全局变量不能在函数内部访问
- 23. 在回调函数内部访问实例变量
- 24. 如何访问一个变量或其它函数内部函数的值
- 25. 函数变量内部的调用函数变量
- 26. 外部世界可访问的函数内的变量
- 27. Python变量创建函数
- 28. 如何访问闭包内的外部函数变量(python 2.6)?
- 29. 无法访问查询函数内部的自变量
- 30. 从函数内部不能访问全局变量? (JavaScript)的
你能共享的源代码? – rene 2012-01-01 15:20:30