/*
功能:
类似于OC中的分类(Swift的扩展没有名字)。
语法:
extension 类型 {
扩展内容
}
作用:
3、提供新的构造方法
4、定义下标
5、定义和使用新的嵌套类型
6、使一个已有类型符合某个接口
*/
//以下标方式访问字符串中的字符
extension String {
//实现此方法可以通过下标方式访问成员
subscript (i: Int) -> Character {
get {
return self[characters.index(startIndex,offsetBy: i)]
}
set {
let index = characters.index(startIndex,offsetBy: i)
self.remove(at: index)
self.insert(newValue,at: index)
}
}
}
var str = "abc"
print(str[0]) // a
str[0] = "A"
print(str) //Abc
//练习:给Int添加方法实现通过下标获取该整数对应的位上的值,计数从后往前
//如:print(1234[1]),结果将打印3
class Student {
var name: String = ""
var age: Int = 0
}
extension Student {
#if true
struct TempType {
static let stu: Student = Student()
}
class func defaultStudent() -> Student {
return TempType.stu
}
#else
class func defaultStudent() -> Student {
struct TempType {
static let stu: Student = Student()
}
#endif
}
var stu1 = Student.defaultStudent()
stu1.age = 20
var stu2 = Student.defaultStudent()
print(stu2.age) //20
//一个扩展可以扩展一个已有类型,使其能够适配一个或多个协议
protocol TestProtocol {
func test();
}
extension Student: TestProtocol {
func test() {
print("test method")
}
func extensionFunc() {
print("扩展方法")
}
}
//使用扩展的协议方法
stu2.test() //test method
//使用扩展的普通方法
stu2.extensionFunc() //扩展方法
原文地址:https://www.jb51.cc/swift/321697.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。