Swift 核心技术与实战
从理论到实践,快速掌握 Swift 开发
张杰  美团点评高级技术专家
视频课
已完结·共 120 讲
|
2.1w 人已学
|
收藏
陈高健
谢谢,学到很多
2020-04-04
晏书
这个是我第一次留言,学习到现在才发现了swift的神奇之处,并对他产生了主动性学习的动力。
作者回复:加油,相信国内的swift环境会越变越好
2020-04-03
Nate Robinson
蛮喜欢老师这个先理论+再实际代码体验的教学模式的,这样的模式比起一边理论,一边代码体验感觉上更让人有了自主学习总结的间隙,有助于消化吸收。
2020-03-16
无问西东
感谢大佬, 全部看完了来评价, 收获很多, 期待老师出新课程
2020-01-06
L R
很不错 对swift可以有全面的认识 支持
2019-12-26
一个工匠
优秀优秀,很多视频都看了,棒
2019-12-12
Life is fantastic
不好意思,前几天学所有权在消化做笔记。今天把这段代码分享给老师和大家,代码来源于互联网,注释为本人注释,如有不对的地方请大家指正,。 prefix operator +☀ infix operator +-☀ : PlusMinusPrecedence precedencegroup PlusMinusPrecedence { associativity: none // 结合性(left\right\none) higherThan: AdditionPrecedence //比谁的优先级高 lowerThan: MultiplicationPrecedence//比谁的优先级低,不能是该模块内部的 assignment: false //如果设置成true,那么遇到可选链的时候该操作符就相当于赋值操作符。否则false就不执行赋值操作。 } struct Point { var x: Int, y: Int static prefix func +☀(point: inout Point) -> Point { point = Point(x: point.x + point.x, y: point.y + point.y) return point } static func +-☀(left: Point,right: Point) -> Point { return Point(x: left.x + right.x, y: left.y - right.y) } static func +-☀(left: Point?,right: Point) -> Point { print("+-☀") return Point(x: left?.x ?? 0 + right.x, y: left?.y ?? 0 - right.y) } } struct Person { var point: Point //= Point(x: 10, y: 20) } var person: Person? //= Person.init() person?.point +-☀ Point(x: 10, y: 20)//(Point(x: 10, y: 20) +-☀ Point(x: 10, y: 20)) print(person?.point as Any) var test = Point(x: 10, y: 20) Point(x: 10, y: 20) +-☀ (+☀test)
作者回复:我把你的例子改了一下,既然是赋值运算,你的实现里明显不是。 infix operator +-☀ : PlusMinusPrecedence precedencegroup PlusMinusPrecedence { associativity: none higherThan: AdditionPrecedence lowerThan: MultiplicationPrecedence assignment: true } struct Point { var x: Int, y: Int static func +-☀(left: inout Point, right: Point) { left = Point(x: left.x + right.x, y: left.y - right.y) } } struct Person { var point: Point } var person: Person? person?.point +-☀ Point(x: 10, y: 20) print(person?.point as Any) 你可以尝试把assignment的true改成false,是会报错的,所以assignment的可选链里的作用如下: “This proposal quietly drops the assignment modifier that exists on operators today. This modifier had one important function–an operator marked assignment gets folded into an optional chain, allowing foo?.bar += 2 to work as foo?(.bar += 2) instead of failing to type-check as (foo?.bar) += 2. In practice, all Swift operators currently marked assignment are at the equivalent of the Assignment precedence level, so the core team recommends making this optional chaining interaction a special feature of the Assignment precedence group.”
2019-11-21
aaaVege💫
写的这么细,不容易
2019-11-16
月落泉
讲的很好。为你点赞
作者回复:感谢,努力把每个知识点讲明白
2019-11-02
澜奏
老师加油更新哇🤩
编辑回复:有些内容已经录好了,等待极客时间的同学每周陆续更新
2019-10-28
讲师

张杰

美团点评高级技术专家

张杰,美团点评高级技术专家,有超过 10 年的开发经验,8 年多的客户端开发经验,先后任职于土豆、百度等公司。目前在负责客户端架构、基础设施等方面的工作。 参与过美团、点评、美团旅行等 App 的开发工作,曾经在公司进行过 Swift 的布道,还带领过团队用 Swift 开发过...查看更多
编辑推荐
包含这门课的学习路径

iOS工程师

7门课程 31.2w人学习
看过的人还看了
iOS 开发高手课
戴铭
前滴滴出行技术专家

47讲 | 42940 人已学习

¥59¥129
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283805 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 181001 人已学习

¥98¥399
从 0 开发一款 iOS App
朱德权
腾讯高级工程师

106讲 | 24183 人已学习

¥59¥129
Flutter 核心技术与实战
陈航
前美团点评高级技术专家

48讲 | 42441 人已学习

¥59¥99
趣谈网络协议
刘超
前网易研究院云计算技术部首席架构师

51讲 | 130453 人已学习

¥68¥199