Swift - 类扩展extension

Swift语言的类扩展是一个强大的工具,我们可以通过类扩展完成如下事情:
1,给已有的类添加计算属性和计算静态属性
2,定义新的实例方法和类方法
3,提供新的构造器
4,定义下标脚本
5,是一个已有的类型符合某个协议
(注意:扩展只能添加新的计算型属性,不能添加存储型属性,也不能添加新的属性监视器)

示例1:给字符串String类添加下标脚本,支持索引访问
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
extension String
{
subscript(start: Int ,length: ) -> String
{
get {
return ( self as Nsstring ).substringWithRange( NSRange (location: start,length: length))
}
set {
let tmp = self
var s = ""
e = ""
for (idx,item) in tmp.characters. enumerate () {
if (idx < start)
{
s += "\(item)"
}
else {
e += "\(item)"
}
}
self = s + newValue + e
}
}
subscript(index: String
{
{
return String [ .startIndex.advancedBy(index)])
}
{
self
= ""
() {
idx == index {
+= "\(newValue)"
} else {
"\(item)"
}
}
}
}
}
str = "hangge.com"
print (str[7,3])
(str[7])
str[7,3] = "COM"
str[0] = "H"
(str[0,10])

示例2:给Double增加mm,cm等方法,进行进制转换
31
Double
func mm()-> return "\(self/1)mm"
}
cm()-> String
"\(self/10)cm"
}
dm()-> {
"\(self/100)dm"
}
m()-> String
{
"\(self/1000)m"
}
km()-> String
{
"\(self/(1000*1000))km"
value = 2000000000.0
(value.mm())
(value.cm())
(value.dm())
(value.m())
(value.km())

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...