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 type StudioAlbum?, 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是放在单独参数声明。

>>>>>> 更多阅读 <<<<<<


欢迎加入「福强私学」

跨越2190个日夜,始终坚持“实践 + 原创”打造的715125字专属知识库,囊括了(但不限于)从职场、技术、管理与商业等多个板块的内容。

  • 一个ChatGPT触达不到的地方
  • 一个带你超越AI/人工智能的地方
  • 一个与你一起成长的地方

https://afoo.me/kb.html


开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。

订阅「福报」