Swift极速快打
王福强
2023-08-02
让ChatGPT帮忙写的一些Swift代码看起来有些费劲,所以,简单扫了下Swift的语法:
- swift里的protocol类似于scala的trait或者java的interface
- extension可以把新功能加到已有类型上,有点儿跟scala3的extension method类似。
- throw Error(而不是像java/scala那样throw Exceptions)
- do-catch(而不是像java/scala那样try-catch)
- nil(对应java/scala里的null)
- “Your name is (name)” (对应scala里的string interpolation
${...}
,swift里也叫string interpolation,只不过用\(...)
,变量名或者表达式) - if 和if let(以及guard let)是不一样的表达式,https://agrawalsuneet.github.io/blogs/if-vs-if-let-vs-guard-let-in-swift/, if let有点儿scala里option的味道,作用是unwrap optional binding
- functions的参数可以指定两个名称,一个是外部调用时候用,一个内部引用的时候用,https://www.hackingwithswift.com/read/0/11/functions
func countLettersInString(myString str: String)
- struct, 类似scala的case class,数据容器类数据结构, 或者kotlin的data class
- 强制类型转换,
as?
,比如let studioAlbum = album as? StudioAlbum
(this will make studioAlbum have the data typeStudioAlbum?
, That is, an optional studio album), 其实我倒是一直挺希望Scala能把那个又臭又长的asInstanceOf改掉或者有个类似的简短的形式。 - Trailing closures, 最后一个参数可以用语法糖(if the last parameters to a method are closures, you can eliminate those parameters and instead provide them as a block of code inside braces.),这个倒是跟scala的有点儿像,只不过scala是放在单独参数声明。
「福强私学」来一个?
「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。
开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。