DahuangPhoneiOSSwift → Swift中的扩展


  共有8536人关注过本帖树形打印复制链接

主题:Swift中的扩展

帅哥哟,离线,有人找我吗?
dahuangphone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:407 积分:4533 威望:0 精华:0 注册:2012/9/29 7:54:10
Swift中的扩展  发帖心情 Post By:2014/10/11 21:02:51 [只看该作者]

//扩展,可以应用到所有类型,包括类,结构体,枚举,其他基本类型等


//可以添加的新功能包括:

//实例计算属性和静态计算属性

//实例方法和静态方法

//构造器

//下标

//使一个已有类型符合某个协议


//扩展嵌套类型,向一个类型嵌套另一个类型,类型值得是 类,结构体,枚举


//修改实例本身(结构体和枚举),使用mutating标示符


//不能增加、修改实例储存属性静态存储属性



extension Int{


//扩展嵌套类型,向一个类型嵌套另一个类型,类型值得是 类,结构体,枚举

 enum E{

        case a,b,c

    }

    

    var kind:E{

    switch self{

    case 0..<10:

        return .a

    case 10..<100:

        return .b

    default:

        return .c

        }

    }

    

    //实例计算属性

    var errorMessage:String{

    var errorStr=""

        switch self{

        case -7:

            errorStr="no data"

        case -6:

            errorStr="no time"

        default:

            errorStr="none"

        }

        return errorStr

    }

    

    //静态计算属性

    static var staticMessage:String{

        return "静态计算属性"

    }

    

    //实例方法

    func funcMessage()->String{

        return "实例方法"

    }

    

    //静态方法

    static func staticFuncMessage()->String{

        return "静态方法"

    }


        //修改实例本身(结构体和枚举),使用mutating标示符,这种情况下结构体不能声明为常量

   mutating func square()->Int{

        return self*self

   }

    

    //构造器  (便利构造器也可以,不过只是在类里才有)

    init(test:String){

        self.init(3)

    }

    

    

}



var a:Int = -7

a.errorMessage

a=Int(test:"ssadf")

a.funcMessage()

Int.staticFuncMessage()

Int.staticMessage




//通过扩展让String可以通过下标返回字符


extension String{

    subscript(index:Int)->String{

        if index>countElements(self){

            return ""

        }

        var c:String=""

        var i=0

        for Character in self{

            if i==index{

                c=String(Character)

                break;

            }

            i++

        }

        return c

    }

            

}


let str="this is string"

str[9]


//使一个已有类型符合某个协议

extension Int: SomePotocol{


//协议的具体实现


}



[此贴子已经被作者于2014/10/13 15:45:52编辑过]

 回到顶部