zoukankan      html  css  js  c++  java
  • Swift

    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
    extension String
    {
        subscript(start:Int, length:Int) -> String
            {
            get{
                return (self as NSString).substringWithRange(NSRange(location: start, length: length))
            }
            set{
                var tmp = Array(self)
                var s = ""
                var e = ""
                for (idx, item) in enumerate(tmp) {
                    if(idx < start)
                    {
                        s += "(item)"
                    }
                    if(idx > start + length)
                    {
                        e += "(item)"
                    }
                }
                self = s + newValue + e
            }
        }
     
        subscript(index:Int) -> String
            {
            get{
                return String(Array(self)[index])
            }
            set{
                var tmp = Array(self)
                tmp[index] = Array(newValue)[0]
                self = ""
                for (idx, item) in enumerate(tmp) {
                    self += "(item)"
                }
            }
        }
    }
     
    var str = "hangge.com"
    println(str[7,3])
    println(str[7])
     
    str[7,3] = "COM"
    str[0] = "H"
     
    println(str[0,10])


    示例2:给Double增加mm,cm等方法,进行进制转换

    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
    extension Double
    {
        func mm()->String
        {
            return "(self/1)mm"
        }
        func cm()-> String
        {
           return "(self/10)cm"
        }
         
        func dm()->String{
            return "(self/100)dm"
        }
         
        func m()->String
        {
            return "(self/1000)m"
        }
        func km()->String
        {
            return "(self/(1000*1000))km"
        }
    }
     
    var value = 2000000000.0
    println(value.mm())
    println(value.cm())
    println(value.dm())
    println(value.m())
    println(value.km())
  • 相关阅读:
    app移动测试 (自动化遍历方法和技巧)(转载大佬)
    使用Jmeter录制脚本并调试
    整理token,session ,cookies 和正则表达式整理
    ·接口测试核心:URL&HTTP协议详解
    性能测试基本概念 聚合报告指标分析
    数据分析技能点梳理
    数据分析整体知识点架构(转载)
    数据分析职业前景规划
    数据分析三年建议指导(书籍等)
    系统吞吐量(TPS)、用户并发量、性能测试概念和公式 (转载)
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4838112.html
Copyright © 2011-2022 走看看