从此刻开始拥抱 Swift 3.0

2024-08-21 13:08
文章标签 swift 拥抱 3.0 此刻

本文主要是介绍从此刻开始拥抱 Swift 3.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

API is shortened
++ / –
Swift 2.2 的时候对 a ++ 或者 a – 已经给出warning 提示将在Swift3.0中将废除。

不嫌麻烦可以重载运算符来实现

postfix operator ++postfix func ++(a: Int) -> Int {return a + 1
}a++ // 11

更彻底点可以考虑使用引用,加上 inout

函数中的 var
为了修改函数参数,添加 var 关键字

func setName(var name: String) {}

现已删除

func setName(name: String, na: String) {name += na}

无法再修改参数, inout可以

Repeat

var i = 0repeat {print("Hello")i = i + 1
} while( i < 10 )

替代 do while 感觉主要是避免与 do catch冲突

每个函数的参数标签一致:


func getPerson(name: String, age: Int) {//....
}

Swift 2.2 中:

getPerson("Vic", age: 10)

Swift 3 中:

getPerson(name: "Vic", age: 10)

除非手动添加 _ 否则参数名会保持一致性原则

一直在改变的Selector
Swift 3:

button.addTarget(Responder(), action: #selector(Responder.tap), for: .touchUpInside)

将确定selector的过程从运行时移到了编译时。

KVO

#KeyPath()//形式类似于Selector

只适用于非Objc对象。

class Object : NSObject {@objc var name = ""var age = 0init(name: String, age: Int) {self.name = nameself.age = age}
}let sss = p.value(forKey: #keyPath(Object.age))

@discardableResult
如果未使用函数返回值,在没有 @discardableResult的前提下,会报错

fileprivate: 让私有变得更具体
之前 Swift 2.2 及之前版本,private 并不是严格的私有,在同一文件,依然可以访问到.

为了严格化, Swift3.0 中 设置了 fileprivate 来取代之前 private 的作用。 而新的 private 则是严格的私有权限。

fileprivate func sss() {}private func aaa() {}

private 变得更加严格。

class Access {private var a = 0private func getA() -> Int {return a;}fileprivate func desc() {print("\(a) time")}}let p = Access()
// 报错,提示getA() 是私有成员
p.getA()

上述p只能访问desc()

Swift现有 访问级别
公开(public)
内部(internal)
文件外私有(fileprivate)
私有(private)

inout 变了

之前的写法

func saaa(inout a: Int) {}

现在作为一种修饰符而存在

func saaa(a: inout Int) {}

**关联类型声明由 typealias 变为 associatedtype
先说下 Swift的关联类型**

Swift支持泛型,class struct enum 都支持泛型, 而协议呢?

Swift是一门面向协议的语言。

protocol hahah<T> {}

Protocols do not allow generic parameters, use associated types instead

泛型协议

protocol Haha {associatedtype Elementvar s: Int { get set }func getElement() -> Element}

在 Swift 3 中, 不再允许 typealias 来构造泛型。

告别C经典循环方式

for (int i = 0; i < 10; i ++)

Swift Loop Style

// i is not mutable
for i in 1...3 {// i += 1   print(i)}// i is mutable
for var i in 1...10 {   i += 1print(i)
}// 枚举
(1...3).forEach{i inprint(i)
}

告别柯里化函数

Xcode 7.3 的 Swift 2.2 版本中已有提示柯里化函数不再使用。

func add(a: Int)(b: Int) -> Int {return a + b
}

当然函数式编程依然完美解决

func add(_ a: Int) -> (Int)-> Int {return { b in return a + b }
}
var s = add(10)(20)

这篇关于从此刻开始拥抱 Swift 3.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093243

相关文章

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

【C-实践】文件服务器(3.0)

文件服务器1.0文件服务器2.0文件服务器4.0 概述 使用了 tcp + epoll + 线程池 + 生产者消费者模型,实现文件服务器 有两个进程,主进程负责接收退出信号用来退出整个程序;子进程负责管理线程池、客户端连接以及线程池的退出 子进程中的主线程生产任务,其他子线程消费任务 功能 主要功能:客户端连接服务器,然后自动下载文件 注意 实际传输速度

Swift知识点---RxSwift学习

1. 什么是RxSwift RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发、维护 RxSwift的目的是:让数据/事件流 和 异步任务能够更方便的序列化处理,能够使用Swift进行响应式编程 RxSwift本质上还是观察者模式,并且是一个响应式的,并且可以序列化的 观察者模式 观察者模式包括:KVO、通知等 爸爸妈妈照看观察宝宝 其中,

王立平-- Swift

Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。     Swift已经存在了多年。Apple基于已有的编译器、调试器、框架作为其基础架构。通过ARC(Au

如何为 MongoDB 3.0.4 以下版本选择合适的 PyMongo 版本

在使用 MongoDB 时,开发者通常会使用 Python 的 pymongo 库来与 MongoDB 进行交互。然而,不同版本的 MongoDB 需要匹配相应版本的 pymongo 才能正常运行。如果你的 MongoDB 版本较低(例如 3.0.4 以下),而使用了不兼容的 pymongo 版本,就会遇到连接失败或功能异常的问题。 在这篇文章中,我们将介绍如何为 MongoDB 3.0.4 以

面壁小钢炮3.0发布:端侧ChatGPT时代的技术飞跃

一、面壁小钢炮3.0模型介绍  ➤  MiniCPM 3.0 开源地址: 🔗 https://github.com/OpenBMB/MiniCPM 🔗 https://huggingface.co/openbmb/MiniCPM3-4B         2024年9月5日,面壁智能发布 MiniCPM3-4B!该模型的表现超越 Phi-3.5-mini-instruct 和 GPT-3

数据倾斜?Spark 3.0 AQE专治各种不服

Spark3.0已经发布半年之久,这次大版本的升级主要是集中在性能优化和文档丰富上,其中46%的优化都集中在Spark SQL上,SQL优化里最引人注意的非Adaptive Query Execution莫属了。 Adaptive Query Execution(AQE)是英特尔大数据技术团队和百度大数据基础架构部工程师在Spark 社区版本的基础上,改进并实现的自适应执行引擎。近些年来,S

The `XXXUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build......

出现的警告: [!] The `ColorInHeartUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ColorInHeart-ColorInHeartUITests/Po

swift快捷键大全

1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 CMD + S: 保存 CMD + SHIFT + S: 另存为 CMD + W: 关闭窗口 CMD + SHIFT + W: 关闭文件 2. 编辑 CMD + [: 左缩进 CMD + ]: 右缩进 CMD + CTRL + LEFT: 折叠 CMD + CTRL + RIGHT: