swift协议, Swift 协议 遵从 运用 编程
Swift 中的协议(Protocol)是一种界说办法、特点和其它要求的标准。它用于指定类、结构体和枚举有必要遵从的规矩,但不供给详细的完成。Swift 中的协议类似于其它语言中的接口或抽象类。
1. 界说协议:运用 `protocol` 关键字界说一个协议,并在花括号内列出协议要求的办法、特点等。2. 遵从协议:一个类、结构体或枚举能够遵从一个或多个协议,并在其界说中运用 `: 协议名` 来指定。遵从协议的类型有必要完成协议中一切非可选的要求。3. 可选要求:协议中的要求能够是可选的,这意味着遵从协议的类型能够挑选是否完成该要求。在协议中,运用 `@optional` 符号可选要求。4. 扩展协议:能够运用 `extension` 关键字为协议增加额定的功用,而不需要修正遵从该协议的类型。这类似于为类增加扩展。5. 协议承继:协议能够承继自其它协议,这意味着它包括其它协议的一切要求,而且能够增加新的要求。
以下是一个简略的 Swift 协议示例:
```swiftprotocol CanFly { func fly}
struct Bird: CanFly { func fly { print }}
struct Plane: CanFly { func fly { print }}
let bird = Birdbird.fly // 输出:鸟在翱翔
let plane = Planeplane.fly // 输出:飞机在飞翔```
在这个示例中,`CanFly` 协议界说了一个 `fly` 办法。`Bird` 和 `Plane` 结构体都遵从了 `CanFly` 协议,并完成了 `fly` 办法。当调用 `fly` 办法时,会输出相应的音讯。
深化探究 Swift 协议:界说、遵从与运用
Swift 协议 遵从 运用 编程
一、什么是 Swift 协议?
Swift 协议(Protocol)是 Swift 编程语言中的一项中心特性,它供给了一种界说接口和完成多态的强壮办法。经过协议,咱们能够指定遵从该协议的类型有必要完成哪些功用。协议类似于其他编程语言中的接口(interface)或抽象类(abstract class)。
二、协议的根本语法
在 Swift 中,协议的界说运用 `protocol` 关键字。下面是一个简略的协议示例:
```swift
protocol ExampleProtocol {
var mustBeSettable: Int { get set }
var doesNotNeedToBeSettable: Int { get }
func protocolMethod()
在这个比如中,`ExampleProtocol` 协议界说了一个可读写特点 `mustBeSettable`、一个只读特点 `doesNotNeedToBeSettable` 和一个办法 `protocolMethod()`。
三、恪守协议
类型能够经过在类型称号后加上协议称号来恪守协议。例如:
```swift
struct ExampleStruct: ExampleProtocol {
var mustBeSettable: Int = 0
let doesNotNeedToBeSettable: Int = 1
func protocolMethod() {
// 完成协议办法
}
在这个比如中,`ExampleStruct` 结构体恪守了 `ExampleProtocol` 协议,并供给了详细的完成。
四、协议中的特点和办法
协议不只能够界说办法,还能够界说特点和下标(subscript)。协议中的特点能够是只读的,也能够是可读写的。
```swift
protocol FullyNamed {
var fullName: String { get }
var age: Int { get set }
protocol Greetable {
func greet(name: String) -> String
在上面的比如中,`FullyNamed` 协议界说了一个只读特点 `fullName` 和一个可读写特点 `age`,而 `Greetable` 协议界说了一个办法 `greet`。
五、协议的承继与组合
协议能够承继其他协议,从而在单个协议中组合多个要求。一个类型能够遵从多个协议。
```swift
protocol Vehicle {
var speed: Double { get set }
func drive()
protocol ElectricVehicle: Vehicle {
var batteryCapacity: Int { get }
class Car: ElectricVehicle {
var speed: Double = 0.0
var batteryCapacity: Int = 100
func drive() {
// 完成驾驭逻辑
}
在这个比如中,`ElectricVehicle` 协议承继自 `Vehicle` 协议,并增加了一个新的特点 `batteryCapacity`。
六、协议扩展
咱们能够经过扩展来为协议增加默许完成。这样,遵从协议的类型能够挑选性地完成这些默许完成或供给自己的完成。
```swift
extension FullyNamed {
var description: String {
return \
相关
-
login.php, login.php的效果详细阅读
我无法直接拜访或查看特定的网页内容,例如login.php。假如您有关于登录页面的问题或许需求协助了解登录页面的功用,请告诉我,我会极力供给协助。《深化解析login.ph...
2024-12-26 3
-
r言语 官网,从入门到通晓详细阅读
R言语的官方网站是。这个网站供给了关于R言语的详细信息、下载链接、文档资源、教程以及其他相关材料。假如你对R言语感兴趣或许需求使用它进行核算核算和图形处理,能够拜访这个网站获...
2024-12-26 2
-
go协程,kotlin协程详细阅读
Go言语中的协程(Goroutine)是一种轻量级的线程。它们被规划为在同一地址空间中并发运转,而无需运用操作系统等级的线程。每个Goroutine都有自己的仓库和程序计数器,...
2024-12-26 2
-
delphi7序列号,Delphi7序列号获取与运用指南详细阅读
1.序列号获取办法:能够经过一些东西如keygen.exe或EPSDelphi.v7.exe来生成所需的序列号和授权密钥。这些东西能够在一些论坛或博客上找到,例如。...
2024-12-26 3
-
宏基蜂鸟swift3,宏基蜂鸟Swift3——轻浮便携,功能杰出的作业利器详细阅读
宏碁蜂鸟Swift3是一款备受重视的轻浮笔记本电脑,以下是其主要特色和装备信息:外观规划宏碁蜂鸟Swift3采用了全金属机身规划,造型精约时髦。机身分量为1.19kg,厚...
2024-12-26 2
-
python是免费的吗,Python是免费的吗?全面解析Python的免费特性详细阅读
Python是免费的,并且是开源的。它由PythonSoftwareFoundation保护,遵从PSF答应协议。这意味着你能够自由地下载、运用、分发和修正Py...
2024-12-26 4
-
python中input, 什么是input()函数?详细阅读
在Python中,`input`函数用于从用户那里获取输入。它答应用户在程序运行时输入数据,并将其作为字符串回来。这里有一些关于`input`函数的重关键:1.`inp...
2024-12-26 4
-
r言语建模,R言语在建模中的运用与优势详细阅读
1.装置R言语和必要的包:下载并装置R言语。装置必要的R包,例如`ggplot2`用于数据可视化,`caret`用于模型练习和评价,`randomForest...
2024-12-26 4
-
python索引详细阅读
在Python中,索引是一个非常重要的概念,特别是在处理序列类型的数据结构时,如列表(list)、元组(tuple)、字符串(str)等。索引答应咱们经过一个整数来拜访序列中的...
2024-12-26 4
-
python模块,从概念到实战详细阅读
当然能够,您想了解关于Python模块的哪些方面呢?例如,模块的界说、怎么创立模块、怎么导入模块,仍是关于特定模块的运用指南?请告诉我您详细的需求,我会极力为您供给协助。浅显易...
2024-12-26 4