Swift--13协议使用

前端之家收集整理的这篇文章主要介绍了Swift--13协议使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_502_1@/*

@H_502_1@作用:

1@H_502_1@、Protocol(@H_502_1@协议)@H_502_1@用于统一方法属性名称,而不实现任何功能

2@H_502_1@、协议能够被类,枚举,结构体实现,满足协议要求的类型被称为协议的遵循者。

3@H_502_1@、遵循者需要提供协议指定的成员,如属性方法,操作符,下标等

@H_502_1@

@H_502_1@语法:

@H_502_1@protocol 协议名@H_502_1@ {

@H_502_1@属性方法

@H_502_1@}

struct @H_502_1@类型:协议一,协议二 {

@H_502_1@协议中的属性方法的实现

class @H_502_1@类型:父类,协议一,协议二 {

@H_502_1@}

@H_502_1@说明:

1@H_502_1@、协议本身不实现任何功能,但你可以将它当做类型来使用

2@H_502_1@、协议也可以继承一个或多个(@H_502_1@用逗号隔开)@H_502_1@其它协议

3@H_502_1@、协议中也可添加可选的属性方法,并且只对类有效

(@H_502_1@协议前添加@objc@H_502_1@说明是可选的,属性方法添加optional)

@H_502_1@*/

@H_502_1@

@objc@H_502_1@ protocol@H_502_1@ AddProtocol {

@H_502_1@//只读

@H_502_1@ var@H_502_1@ a:Int@H_502_1@ {get@H_502_1@}

@H_502_1@//可读可写

@H_502_1@ var@H_502_1@ b:Int@H_502_1@ {get@H_502_1@set@H_502_1@}

@H_502_1@//普通方法

@H_502_1@ func@H_502_1@ add() ->Int

@H_502_1@

@H_502_1@@objc@H_502_1@optional @H_502_1@var c:Int {@H_502_1@get}

@H_502_1@ @objc@H_502_1@optional@H_502_1@ func@H_502_1@ optionalFunc()

@H_502_1@}

@H_502_1@

protocol@H_502_1@ SubProcotol {

@H_502_1@ func@H_502_1@ sub()->Int

@H_502_1@}

@H_502_1@

class Calculate: @H_474_301@NSObject,@H_502_1@AddProtocol,@H_502_1@SubProcotol {

@H_502_1@ var@H_502_1@ a:Int@H_502_1@ {

@H_502_1@ return@H_502_1@100

@H_502_1@ }

@H_502_1@ var@H_502_1@ b:Int@H_502_1@ = 0

@H_502_1@ func@H_502_1@ add() ->Int@H_502_1@ {

@H_502_1@ return@H_502_1@a@H_502_1@+b

@H_502_1@ }

@H_502_1@ func@H_502_1@ sub() ->Int@H_502_1@ {

@H_502_1@ return@H_502_1@a@H_502_1@-b

@H_502_1@ }

@H_502_1@}

@H_502_1@

var@H_502_1@ calc = Calculate@H_502_1@()

@H_502_1@//calc.a = 100

@H_502_1@calc.@H_502_1@b =200

print@H_502_1@(calc@H_502_1@.add@H_502_1@())

print@H_502_1@(calc@H_502_1@.sub@H_502_1@())

@H_502_1@

let c2 = calcas @H_502_1@AddProtocol

//@H_502_1@这样调用会前置解包,解包失败会崩溃

@H_502_1@//c2.optionalFunc!()

//@H_502_1@这样调用会隐式解包,解包失败返回nil

c2@H_502_1@.optionalFunc?()

原文链接:https://www.f2er.com/swift/321698.html

猜你在找的Swift相关文章