In a script I have several functions that need to break down an SVN external definition. These can either be
, -r
I agree with @Christian, and I add another solution.
First you can return using an array explicitly or implicitly :
A) explicitly
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) implicitly
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])"
Second you can return a custom object :
A) Short form
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) School form
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)"
Third using argumen by reference
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"
Maybe I am misunderstanding the question but isn't this just as simple as returning a list of variables, and the caller simply assigns each to a variable. That is
> function test () {return @('a','c'),'b'}
> $a,$b = test
$a will be an array, and $b the letter 'b'
> $a
a
c
> $b
b
You can return an array of [string]
and then let the caller split it or return a custom object and always the caller do the split.