import Foundation
/*
扩展
1.使用扩展添加属性, 方法, 可变方法, 构造器, 下标, 嵌套类型
2.可以使一个已有类型符合一个或者多个协议
3.扩展与OC的Category类似
4.扩展并不是派生子类, 因此不支持重写
*/
/*
[修饰符] extension 已有类型 { // 添加新功能 }
修饰符可以省略, 或者是private, internal, public其中之一,
类型可以是枚举, 结构体和类其中之一
注意: 通过扩展为已有类型添加了新功能, 那个新功能在该类型的所有已有实例中都是可用的
*/
/*
通过扩展让已有的类型遵守一个或者多个协议
语法格式:
[修饰符] extension 已有类型: 协议1, 协议2 { // 添加新功能 }
*/
extension String
{
// 扩展一个计算属性
var length: Int {
get {
return self.characters.count
}
}
// 扩展一个构造器
init(str: String)
{
self = str
}
// 扩展一个方法
func getlength() -> Int
{
return self.characters.count
}
// 扩展一个静态方法
static func show() -> Void
{
print("I'm String")
}
}
var str: String = "Rinpe"
var str2 = String(str: "Lala")
print(str.length)
print(str.getlength())
print(String.show())
print(str2)