加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift - 类扩展(extension)

发布时间:2020-12-14 01:28:49 所属栏目:百科 来源:网络整理
导读:Swift语言的类扩展是一个强大的工具,我们可以通过类扩展完成如下事情: 1,给已有的类添加计算属性和计算静态属性 2,定义新的实例方法和类方法 3,提供新的构造器 4,定义下标脚本 5,是一个已有的类型符合某个协议 (注意:扩展只能添加新的计算型属性,
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())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读