这是一个将范围转换为数组的快速协议和扩展:
protocol ArrayRepresentable {
typealias ArrayType
func toArray() -> [ArrayType]
}
extension Range : ArrayRepresentable {
func toArray() -> [Element] {
return [Element](self)
}
}
我不理解以下行的含义:
return [Element](self)
它返回什么?它如何设法将元素附加到现有数组?
答案 0 :(得分:1)
基本上它会创建一个新数组,其中包含范围内的每个元素。
您可以使用[Int]()
创建一个空的Ints数组。
在这种情况下,Element
是Range中“包含”项的类型。当它调用数组init
时,它将范围本身作为参数传递,初始化程序遍历范围中的元素并将每个元素添加到数组中。