//扩展,可以应用到所有类型,包括类,结构体,枚举,其他基本类型等
//可以添加的新功能包括:
//实例计算属性和静态计算属性
//实例方法和静态方法
//构造器
//下标
//使一个已有类型符合某个协议
//扩展嵌套类型,向一个类型嵌套另一个类型,类型值得是 类,结构体,枚举
//修改实例本身(结构体和枚举),使用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编辑过]