(本文代码已升级至swift3)
1,给已有的类添加计算属性和计算静态属性
2,定义新的实例方法和类方法
3,提供新的构造器
4,定义下标脚本
5,是一个已有的类型符合某个协议
(注意:扩展只能添加新的计算型属性,不能添加存储型属性,也不能添加新的属性监视器)
示例1:给字符串String类添加下标脚本,支持索引访问
swift">
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
52
53
54
|
swift plain">extension
swift color1">String
swift plain">{
swift spaces">
swift plain">subscript(start:
swift color1">Int
swift plain">, length:
swift color1">Int
swift plain">) ->
swift color1">String
swift spaces">
swift plain">{
swift spaces">
swift keyword">get
swift plain">{
swift spaces">
swift keyword">let
swift plain">index1 =
swift keyword">self
swift plain">.index(
swift keyword">self
swift plain">.startIndex, offsetBy: start)
swift spaces">
swift keyword">let
swift plain">index2 =
swift keyword">self
swift plain">.index(index1, offsetBy: length)
swift spaces">
swift keyword">let
swift plain">range =
swift color2">Range
swift plain">(uncheckedBounds: (lower: index1, upper: index2))
swift spaces">
swift keyword">return
swift keyword">self
swift plain">.substring(with: range)
swift spaces">
swift plain">}
swift spaces">
swift keyword">set
swift plain">{
swift spaces">
swift keyword">let
swift plain">tmp =
swift keyword">self
swift spaces">
swift keyword">var
swift plain">s =
swift string">""
swift spaces">
swift keyword">var
swift plain">e =
swift string">""
swift spaces">
swift keyword">for
swift plain">(idx, item)
swift keyword">in
swift plain">tmp.characters.enumerated() {
swift spaces">
swift keyword">if
swift plain">(idx < start)
swift spaces">
swift plain">{
swift spaces">
swift plain">s +=
swift string">"\(item)"
swift spaces">
swift plain">}
swift spaces">
swift keyword">if
swift plain">(idx >= start + length)
swift spaces">
swift plain">{
swift spaces">
swift plain">e +=
swift string">"\(item)"
swift spaces">
swift plain">}
swift spaces">
swift plain">}
swift spaces">
swift keyword">self
swift plain">= s + newValue + e
swift spaces">
swift plain">}
swift spaces">
swift plain">}
swift spaces">
swift plain">subscript(index:
swift color1">Int
swift plain">) ->
swift color1">String
swift spaces">
swift plain">{
swift spaces">
swift keyword">get
swift plain">{
swift spaces">
swift keyword">return
swift color1">String
swift plain">(
swift keyword">self
swift plain">[
swift keyword">self
swift plain">.index(
swift keyword">self
swift plain">.startIndex, offsetBy: index)])
swift spaces">
swift plain">}
swift spaces">
swift keyword">set
swift plain">{
swift spaces">
swift keyword">let
swift plain">tmp =
swift keyword">self
swift spaces">
swift keyword">self
swift plain">=
swift string">""
swift spaces">
swift keyword">for
swift plain">(idx, item)
swift keyword">in
swift plain">tmp.characters.enumerated() {
swift spaces">
swift keyword">if
swift plain">idx == index {
swift spaces">
swift keyword">self
swift plain">+=
swift string">"\(newValue)"
swift spaces">
swift plain">}
swift keyword">else
swift plain">{
swift spaces">
swift keyword">self
swift plain">+=
swift string">"\(item)"
swift spaces">
swift plain">}
swift spaces">
swift plain">}
swift spaces">
swift plain">}
swift spaces">
swift plain">}
swift plain">}
swift keyword">var
swift plain">str =
swift string">"hangge.com"
swift functions">print
swift plain">(str[7,3])
swift functions">print
swift plain">(str[7])
swift plain">str[7,3] =
swift string">"COM"
swift plain">str[0] =
swift string">"H"
swift functions">print
swift plain">(str[0,10])
|

示例2:给Double增加mm,cm等方法,进行进制转换
swift">
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
|
swift plain">extension
swift color1">Double
swift plain">{
swift spaces">
swift keyword">func
swift plain">mm()->
swift color1">String
swift spaces">
swift plain">{
swift spaces">
swift keyword">return
swift string">"\(self/1)mm"
swift spaces">
swift plain">}
swift spaces">
swift keyword">func
swift plain">cm()->
swift color1">String
swift spaces">
swift plain">{
swift spaces">
swift keyword">return
swift string">"\(self/10)cm"
swift spaces">
swift plain">}
swift spaces">
swift spaces">
swift keyword">func
swift plain">dm()->
swift color1">String
swift plain">{
swift spaces">
swift keyword">return
swift string">"\(self/100)dm"
swift spaces">
swift plain">}
swift spaces">
swift spaces">
swift keyword">func
swift plain">m()->
swift color1">String
swift spaces">
swift plain">{
swift spaces">
swift keyword">return
swift string">"\(self/1000)m"
swift spaces">
swift plain">}
swift spaces">
swift keyword">func
swift plain">km()->
swift color1">String
swift spaces">
swift plain">{
swift spaces">
swift keyword">return
swift string">"\(self/(1000*1000))km"
swift spaces">
swift plain">}
swift plain">}
swift keyword">let
swift plain">value = 2000000000.0
swift functions">print
swift plain">(value.mm())
swift functions">print
swift plain">(value.cm())
swift functions">print
swift plain">(value.dm())
swift functions">print
swift plain">(value.m())
swift functions">print
swift plain">(value.km())
|
