最近 Swift 5.2
正式发布了,该版本主要提升了开发体验:
- 强化了
compiler diagnostics
(包括错误和警告),以及code completion
。 - 强化了
debug
的可靠性。 - 强化了
Swift Package Manager
的依赖处理。 - 强化了
LSP
和SwiftSyntax
工具链。
还有一些其它方面的优化。
Language Updates
Swift 5.2
实现了如下 proposals
:
专注于Swift技术分享 – 微信公众号:SwiftMic
最近 Swift 5.2
正式发布了,该版本主要提升了开发体验:
compiler diagnostics
(包括错误和警告),以及 code completion
。debug
的可靠性。Swift Package Manager
的依赖处理。LSP
和 SwiftSyntax
工具链。还有一些其它方面的优化。
Swift 5.2
实现了如下 proposals
:
GitHub
最近在 AppStore
上架了 官方 iOS App
。即使不使用 PC
,也可以处理些 GitHub
上的操作,比如组织任务、issues
反馈、评论、review
以及 merge pull requests
等。
GitHub
通知展示在收件箱中,看起来有点像邮箱的收件箱,你可以收藏或标记它们为已完成。
你也可以使用 emoji
进行评论互动,提升活跃度。
iOS
系统中广泛使用了 delegate 模式,如果有 Swift
开发经验的话,你将会发现如下代码无法正常通过编译。
class MyClass {
weak var delegate: MyDelegate?
}
protocol MyDelegate {
}
报错信息如下:
‘weak’ must not be applied to non-class-bound ‘MyDelegate’; consider adding a protocol conformance that has a class bound
因为使用了 weak
关键字,必须让该 protocol
满足 class
类型。
protocol MyDelegate: class {
}
继续阅读“Class-only Protocols – class or AnyObject”
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
链接:https://leetcode-cn.com/problems/add-two-numbers
Apple
最近新开源了一个库,叫 ArgumentParser,它是由 Swift 实现的,用于解析命令行参数(command-line arguments)的。
为了演示如何使用 ArgumentParser
库,我们将以一个生成随机数为示例。
> random 20
17
> random 100
89
> random
Error: Missing expected argument '<high-value>'
Usage: random <high-value>
定义了一个 Random
类型,并且需要一个整数类型的参数(highValue
),然后会生成一个介于 1 和 highValue
之间的随机数。
源码如下:
import ArgumentParser
struct Random: ParsableCommand {
@Argument() var highValue: Int
func run() {
print(Int.random(in: 1...highValue))
}
}
Random.main()
实现就是这么简单。
@Argument
表明该属性是作为命令行参数(command-line argument
)的。main()
方法,将会开始解析,如果成功将运行命令行工具(command-line tool
)。highValue
属性的名称以及类型等。highValue
被定义成 Int
类型,只有输入合法的值才可以,否则将会报错。继续阅读“介绍 Swift ArgumentParser 库”