【发布时间】:2014-07-03 08:31:41
【问题描述】:
有没有办法清除函数内部的返回值,这样我就可以保证返回值是我想要的?或者也许关闭函数的这种行为?
在这个例子中,我希望返回值是一个包含 ("Hello", "World") 的 ArrayList
function GetArray()
{
# $AutoOutputCapture = "Off" ?
$myArray = New-Object System.Collections.ArrayList
$myArray.Add("Hello")
$myArray.Add("World")
# Clear return value before returning exactly what I want?
return $myArray
}
$x = GetArray
$x
但是,输出包含从添加操作中捕获的值。
0
1
Hello
World
我觉得 Powershell 的这个“特性”很烦人,因为它很容易通过调用另一个函数来破坏你的函数,而你不知道它返回了一个值。
更新
我了解有一些方法可以防止输出被捕获(如下面的答案之一所述),但这需要您知道函数实际上返回一个值。如果您正在调用另一个 Powershell 函数,将来可能有人更改此函数以返回一个值,这将破坏您的代码。
【问题讨论】:
-
你是如何处理这个问题的。这是 powershell 的一个非常烦人的特性,不允许控制返回值。
-
我只是在所有地方都使用了 [void]。我还决定用 C# 做复杂的事情更容易,然后使用 powershell 将它们粘合在一起。
标签: powershell