实现需求:
“123ccc456”.dx.numberCount 打印里面有多少个是数字? 123 456 一共6个数字
本质就是创建一个第三方对象DX
,让这个对象去实现这个计算属性numberCount
,字符串.dx便初始化了这个对象,并把它自己(字符串)传递给了这个对象DX
1.给字符串添加一个dx属性(计算属性)
extension String {
var dx: DX { return DX(self) }
}
2.声明一个类DX
,给这个类添加一个计算属性
struct DX {
var string: String
public init(_ string: String){
self.string = string
}
var numberCount: Int {
var count = 0
for c in string where ("0"..."9").contains(c) {
count += 1
}
return count
}
}
小结: 实现.dx.属性就是创建一个临时对象,并把自己传递给这个临时对象,让这个临时对象去实现相应的方法或者计算属性