У меня есть функция (на самом деле это несколько экземпляров), но бывают случаи, когда она может возвращать список из нескольких элементов, и бывают случаи, когда она может возвращать один элемент.Я хочу, чтобы функция возвращала массив ([System.Object[]]
) каждый раз, чтобы (на принимающей стороне) я всегда мог ожидать, что это будет массив и индекс в нем, даже если я просто вытягиваю 0-й элемент.
Я пытался привести тип возвращаемого значения несколькими способами (см. Код ниже) ... включая (например) return @("asdf")
, return [System.Object[]]@("asdf")
и аналогичные, но, похоже, единственное, что позволяет получить согласованное поведение, это добавитьвторой нулевой элемент в массиве ... который мне кажется неправильным.(См. Код ниже)
function fn1 {
return @("asdf")
}
function fn2 {
return [array]@("asdf")
}
function fn3 {
return [System.Object[]]@("asdf")
}
function fn4 {
# This works but with the side effect of sending a null string that is not actually necessary
return @("asdf",$Null)
}
$v = fn1 # Same for fn2, fn3.
$v.GetType().Name # Expected: Object[], Actual: String
$v[0] # Expected: "asdf", Actual: "a"
$v = fn4
$v.GetType().Name # Expected: Object[], Actual: Object[]
$v[0] # Expected: "asdf", Actual: "asdf"