Swift 不使用任何方法反转数组(反转、追加等)

Swift 不使用任何方法反转数组(反转、追加等),swift,Swift,有一个方法.reversed(),但我一直试图做的是在不使用任何方法的情况下反转数组(.append,.count,.dropLast等) 在我的代码中,我使用了append方法,但我想去掉它 有人能给我解释一下吗?我试图理解方法是如何实际工作的 func reverseArray(array: [Int]) -> [Int] { var length = 0 var array2: [Int] = [] for _ in array { leng

有一个方法.reversed(),但我一直试图做的是在不使用任何方法的情况下反转数组(.append.count,.dropLast等)

在我的代码中,我使用了append方法,但我想去掉它

有人能给我解释一下吗?我试图理解方法是如何实际工作的

func reverseArray(array: [Int]) -> [Int] {
    var length = 0
    var array2: [Int] = []

    for _ in array {
        length += 1
    }
    while length>0 {
        array2.append(array[length - 1])
        length = length - 1
    }

    return array2
}

var sequence = [0,1,2,3,4,5,6,7,8,9]
reverseArray(array:sequence)
我不确定您为什么要这样做,但为了解决您的具体问题,您可以将该值包装在第二个数组中,然后用串联替换
append

array2 += [array[length - 1]]

如果不使用任何方法,就无法编写代码。像array[length-1]这样的代码实际上是在进行方法调用,以获取数组中特定索引处的值。数组存储自身的计数,因此可以快速访问,而无需迭代所有元素。此外,它必须知道计数,这样才能知道终点在哪里,这样才能在终点停止迭代
count
不是一个方法,它是一个计算属性。您的
length
计算在技术上是正确的,但是
for
调用方法:一次调用
Array.makeIterator()
,和
n+1
调用
索引迭代器.next()
。与您的问题无关,但在订阅数组
length-=1
,然后
array2.append(array[length])
之前减少长度会更容易。或者按照John的建议
array2+=[array[length]]
`您是在尝试摆脱所有方法调用,还是仅仅是方法调用的外观?因为前者是不可能的,除非您完全用一种方法重新实现
Array