定义下标脚本之后,可以使用“[]”来存取数据类型的值。
示例1:实现一个我们自定的字符串类,可以方便的通过索引获取某一个字符值,或某一部分字符串。同时也可以通过索引,给某一部分赋值。
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
55
56
57
58
59
60
|
class
SubString
{
var
str:
String
=
""
init
(str:
)
{
self
.str = str;
}
subscript(start:
Int
,length:
) ->
String
{
get
{
return
(str
as
NSString
).substringWithRange(
NSRange
(location: start,length: length))
}
set
{
let
tmp = str
str =
""
s =
""
e =
""
for
(idx,item)
in
tmp.characters.
enumerate
() {
if
(idx < start)
{
s +=
"(item)"
} else if
(idx >= start + length)
{
e +=
"(item)"
}
}
str = s + newValue + e
}
}
/**下标脚本:获取/设置字符**/
subscript(index:
String
{
{
return
(str[str.startIndex.advancedBy(index)])
}
{
tmp = str
""
() {
idx == index {
str +=
"(newValue)"
}
else
{
"(item)"
}
}
}
}
}
str =
SubString
(str:
"hangge.com"
)
print
(str[7,3])
(str[7])
str[7,3] =
"COM"
str[0] =
"H"
(str[0,10])
|
示例1改进:
通过类扩展,也可以直接给String类添加索引功能,代码如下:
51
extension
String
String
{
(
self
{
tmp =
self
""
""
() {
(idx < start)
{
"(item)"
} else
{
"(item)"
}
}
= s + newValue + e
}
}
String
{
[
.startIndex.advancedBy(index)])
{
self
""
() {
idx == index {
+=
"(newValue)"
"(item)"
}
}
}
}
"hangge.com"
(str[7])
"COM"
"H"
示例2:使用一维数组结合下标方法一定程度上模拟实现了二维数组
29
Matrix
{
rows:
Int
grid: [
Double
]
(rows:
) {
.rows = rows
.columns = columns
grid =
Array
(count: rows * columns,repeatedValue: 0.0)
}
func
indexIsValidForRow(row:
Bool
row >= 0 && row < rows && column >= 0 && column < columns
}
subscript(row:
{
assert(indexIsValidForRow(row,column: column),
"Index out of range"
)
grid[(row * columns) + column]
}
{
)
grid[(row * columns) + column] = newValue
}
value =
(rows: 20,columns: 20)
value[10,10] = 20
(value[10,10])
1.字符串长度 count(String) -> String.characters.count 2.字符串裁剪
3.注册通知
|
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|