如何在swift中制作我自己的语法糖?

我试图找出如何使用语法糖定义Swift类型。 就像Apple给Array结构赋予了两种方式定义它的能力: Array​[​String​] ,我如何为MyStruct做同样的事情?

你可以而且不能这样做。

您无法使用[String]类的简写来定义类型。 例如,您不能定义新的链接列表并为其提供‹String›的简写。

可以做的是实现ArrayLiteralConvertible ,这样你就可以像这样创建你的列表:

 let mylist: List = ["Elsa","Anna"] 

通过实现ArrayLiteralConvertible

 struct List { // your List implementation } extension List: ArrayLiteralConvertible { init(arrayLiteral: T...) { // populate list from from arrayLiteral } } 

Set是执行此操作的类型的示例。 数组是默认值,但您可以使用let myset: Set = [1,2,3]创建集let myset: Set = [1,2,3]

同样,你可以实现StringLiteralConvertiblelet r: Regex = "^abc.*def$" ),但你不能创建一个简写let r = /^abc.*def$/ ,只有语言设计者可以这样做。