-1

我需要以某种方式投射一个二维数组......控制台:

solution.swift:22:23: error: missing argument label 'arr:' in call
array = invertArr(arr)
                  ^
                  arr: 
 solution.swift:53:12: error: cannot convert return expression of type '[[Any]]' to return type '[[Int]]'
return result
       ^~~~~~
              as! [[Int]]

这就是代码:

func invertArr(arr:[[Int]]) -> [[Int]]{
var counter = 0
var result = [[]]
for element in arr{
    if counter == 0{
        continue
    }
    var counter2 = 0
    for item in element.reversed(){
        result[counter][counter2] = item
        counter2 += 1
    }
    counter += 1
}
return result
}

感谢您的帮助!

4

1 回答 1

1

由于两个严重的问题,即使您使用arr参数标签调用方法并将结果声明为[[Int]]().

  • counter0 一样,第一个循环continue总是返回一个空数组。
  • result[counter][counter2] = item可靠地崩溃,因为给定索引处没有项目。

为了反转内部数组中项目的顺序,这是一个通用版本

func invertArr<T>(arr: [[T]]) -> [[T]]{
    var result = arr
    for (index, element) in arr.enumerated() {
        result[index] = element.reversed()
    }
    return result
}

let array = [[1, 2, 3, 4], [5, 6, 7, 8]]
let inverted = invertArr(arr: array) // [[4, 3, 2, 1], [8, 7, 6, 5]]

如果您还想反转外部数组中的项目return result.reversed()

于 2020-03-27T18:51:48.183 回答