微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐