Swift--14类型扩展
发布日期:2021-05-08 03:26:44 浏览次数:11 分类:精选文章

本文共 1323 字,大约阅读时间需要 4 分钟。

/*

功能:

扩展就是向一个已有的类、结构体或枚举类型添加新功能。

这包括在没有权限获取原始源代码的情况下扩展类型的能力。

类似于OC中的分类(Swift的扩展没有名字)

语法:

extension 类型 {

    扩展内容

}

作用:

1、添加计算型属性和计算静态属性

2、定义实例方法和类型方法

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()

        }

        return TempType.stu

    }

#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() //扩展方法

上一篇:Python爬取数据过来结果是乱码怎么办?两种解决方案
下一篇:爬虫的概念、类型、反爬机制和反反爬策略及robots.txt协议

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月23日 21时27分24秒