定义Swift的地方我们可以使用`[]`作为数组文字?

时间:2016-04-04 04:36:55

标签: ios swift

我尝试在Swift文档中找到它的定义,但我不能。

我希望如下:

typealias [] = Array
typealias [Element] = Array<Element>
typealias [AnyObject] = Array<AnyObject>

那么为什么可以使用[]代替Array作为初始化程序

编辑依赖答案:
我尝试对我的自定义Person类执行相同操作,但它不起作用:

class Person: ArrayLiteralConvertible {

    typealias Element
    public init(arrayLiteral elements: Self.Element...)
}

let personNames: Person = ["John", "Mark", "Kris"]

1 个答案:

答案 0 :(得分:0)

你可以把它写成一个符合文字协议的文字。设置为数组符合ArrayLiteralConvertible协议,您可以使用相同的数组文字sintax声明一个集合并指定类型以避免编译器混淆,或者仍然将它们推断为Array

let set: Set = ["Hello","Bye"]

要符合数组文字协议,您必须提供初始值设定项:

protocol ArrayLiteralConvertible {
    typealias Element
    init(arrayLiteral elements: Element...)
}

NSHipster上有一篇不错的帖子
文档将文字定义为:

  

文字是类型值的源代码表示,例如   作为数字或字符串。

首先定义文字的位置?我想这是编译器检测它们的责任,并用适当的类型替换。