在脚本中,我有几个需要分解SVN external definition 的函数。这些可以是<url> <path>
,-r<rev> <url> <path>
或-r <rev> <url> <path>
,我提出的提取数据的机制不仅仅是两行,所以我想把它放到一个单独的行中功能。
但是当我这样做时,我最终会得到三个变量,其中包含函数本地的相关数据,我认为没有办法将它们全部三个都传递给调用者。
在适当的编程语言中,我将返回包含所有三个值的复合类型,但我不知道如何在Powershell中执行此操作。当然,我可以把它分成三个独立的函数,但后来我又回到了DRY rule。
那么我在Powershell可以做些什么呢?
答案 0 :(得分:62)
我同意@Christian,并添加了另一种解决方案。
首先您可以显式或隐式地使用数组返回:
A)明确
function ExplicitArray ()
{
$myArray = @()
$myArray += 12
$myArray += "Blue"
return ,$myArray
}
Clear-Host
$a = ExplicitArray
Write-Host "values from ExplicitArray are $($a[0]) and $($a[1])"
B)含蓄地
function ImplicitArray ()
{
Write-Output 12
Write-Output "Blue"
return "green"
}
$b = ImplicitArray
Write-Host "values from ImplicitArray are $($b[0]), $($b[1]) and $($b[2])"
第二次您可以返回自定义对象:
A)简短表格
function ReturnObject ()
{
$value = "" | Select-Object -Property number,color
$value.Number = 12
$value.color = "blue"
return $value
}
$c = ReturnObject
Write-Host "values from ReturnObject are $($c.number) and $($c.color)"
B)学校表格
function SchoolReturnObject ()
{
$value = New-Object PsObject -Property @{color="blue" ; number="12"}
Add-Member -InputObject $value –MemberType NoteProperty –Name "Verb" –value "eat"
return $value
}
$d = SchoolReturnObject
Write-Host "values from SchoolReturnObject are $($d.number), $($d.color) and $($d.Verb)"
第三次使用参考文献
function addition ([int]$x, [int]$y, [ref]$R)
{
$Res = $x + $y
$R.value = $Res
}
$O1 = 1
$O2 = 2
$O3 = 0
addition $O1 $O2 ([ref]$O3)
Write-Host "values from addition $o1 and $o2 is $o3"
答案 1 :(得分:11)
也许我误解了这个问题,但这并不像返回变量列表那么简单,而调用者只是将每个变量分配给变量。 那是
The webpage at qrc:/app.html could not be loaded because:
net:ERR_UNKNOWN_URL_SCHEME
$ a将是一个数组,$ b是字母&#39; b&#39;
> function test () {return @('a','c'),'b'}
> $a,$b = test
答案 2 :(得分:6)
您可以返回[string]
的数组,然后让调用者将其拆分或返回custom object,并且调用者始终进行拆分。