我试图找出如何使用语法糖定义Swift类型.就像apple给Array结构赋予了两种方式定义它的能力:Array?<?String?>而且[?String?],我如何为MyStruct做同样的事情?
你可以也不能这样做。
你不能用像[String]. 例如,您不能定义一个新的链表并将其简写为‹String›.
您可以做的是实施ArrayLiteralConvertible,以便您可以像这样创建列表:
let mylist: List = ["Elsa","Anna"]
Run Code Online (Sandbox Code Playgroud)
通过实施ArrayLiteralConvertible:
struct List<T> {
// your List implementation
}
extension List: ArrayLiteralConvertible {
init(arrayLiteral: T...) {
// populate list from from arrayLiteral
}
}
Run Code Online (Sandbox Code Playgroud)
Set是执行此操作的类型的示例。数组是默认设置,但您可以使用let myset: Set = [1,2,3].
同样,您可以实现StringLiteralConvertible( let r: Regex = "^abc.*def$"),但您不能创建速记let r = /^abc.*def$/,只有语言设计人员才能做到。
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |