Swift:Extension中的这个陈述是什么意思?

时间:2016-03-31 06:59:33

标签: swift protocols extension-methods

这是一个将范围转换为数组的快速协议和扩展:

protocol ArrayRepresentable {
    typealias ArrayType

    func toArray() -> [ArrayType]
}

extension Range : ArrayRepresentable {
    func toArray() -> [Element] {
        return [Element](self)
    }
}

我不理解以下行的含义:

return [Element](self)

它返回什么?它如何设法将元素附加到现有数组?

1 个答案:

答案 0 :(得分:1)

基本上它会创建一个新数组,其中包含范围内的每个元素。

您可以使用[Int]()创建一个空的Ints数组。

在这种情况下,Element是Range中“包含”项的类型。当它调用数组init时,它将范围本身作为参数传递,初始化程序遍历范围中的元素并将每个元素添加到数组中。