Swift学习笔记五:扩展协议

这篇博客详细介绍了Swift中的扩展(extension)和协议(protocol)的使用,包括扩展类型属性和方法、协议的声明与遵守,以及闭包(Closure)的详解。此外,还涉及问号和感叹号的用法、泛型编程、错误处理模式do-try-catch、内存管理和懒加载。通过示例代码展示了如何在实践中应用这些概念。
摘要由CSDN通过智能技术生成

六、扩展协议

1.使用扩展(extension)扩展类型的属性

//扩展:就是向一个已有的类、结构体或枚举类型添加新的能力。扩展可以对一个类型添加新的功能,但是不能重写已有的功能。

//关键字:extension

extension Int  //对计算型属性进行扩展

{

    var double: Int

    {

        return self * 2

    }

    var triple: Int

    {

        return self * 3

    }

    var fourfold: Int

    {

        return self * 4

    }

    var half: Double

    {

        return Double(self) / 2.0

    }

}


2.double

2.triple

2.fourfold

2.half



2.使用extension对方法进行扩展

struct Point //定义结构体

{

    var x = 0.0

    var y = 0.0

}


extension Point //对结构体进行扩展

{

    //添加扩展方法

    func distance(anotherPoint: Point) -> Double

    {  //计算与另一个点之间的距离

        let distanceX = anotherPoint.x - self.x

        let distanceY = anotherPoint.y - self.y

        

        return sqrt(distanceX * distanceX + distanceY * distanceY)

    }

}


let startPoint = Point(x: 0.0, y: 0.0)

let endPoint = Point(x: 10.0, y: 10.0)

startPoint.distance(anotherPoint: endPoint)



3.使用协议(protocol)进行方法的声明

//协议规定了用来实现某个功能所需的方法和属性。协议能够被类、结构体等具体实现(或遵守)。

//协议定义了一个方法的蓝图,属性和其它适合特定任务或功能的要求。定义协议与定义类、结构体和枚举非常相似。

protocol Walking

{

    func walk()

}

protocol Eating

{

    func eat()

}

//协议可以遵守另一个协议,将需要遵守的协议名称放在当前协议名称的后方,之间使用冒号进行分隔。

protocol Fighting: Walking

{

    func fight()

}

//该类遵循两个协议,类名和协议名称之间仍然使用冒号进行分隔,而协议名称之间则使用逗号进行分隔。

class Animal : Fighting, Eating

{

    var name = "Bird"

    var age = 1

    var damage = 10

    

    func fight()

    {

        print("Fighting very hard!")

    }

    func eat()

    {

        print("Happily eating!")

    }

    func walk()

    {

        print("Working gracefully!")

    }

    func say()

    {

        print("I'm a dove of peace!")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值