let str = "str"
像string的初始化方式, "str" 则为字面量,swift中自带的绝大部分类型,都支持直接通过字面量进行初始化
这种使用字面量的初始化方式非常方便,那么如何为自己的类添加字面量的初始化方式呢?
以MyUrl类为例, 有url属性, 若按照传统的初始化方式则如下:
class MyUrl{
var url:URL
init(string: String){
self.url = URL(string: string)
}
}
我们如果想快速字面量进行快速初始化的话,只需MyUrl实现ExpressibleByStringLiteral 协议,实现初始化构造器 :
extension myUrl:ExpressibleByStringLiteral {
init(stringLiteral value: String) {
self.url = URL(string: value)
}
}
此时初始化只需要:
let url:myUrl = "https://www.baidu.com"
print(url.url) // "https://www.baidu.com"