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是放在单独参数声明。
「为AI疯狂」星球上,扶墙老师正在和朋友们讨论有趣的AI话题,你要不要⼀起来呀?^-^
这里
- 不但有及时新鲜的AI资讯和深度探讨
- 还分享AI工具、产品方法和商业机会
- 更有体系化精品付费内容等着你,加入星球(https://t.zsxq.com/0dI3ZA0sL) 即可免费领取。(加入之后一定记得看置顶消息呀!)

存量的时代,省钱就是赚钱。
在增量的时代,省钱其实是亏钱。
避坑儿是省钱的一种形式,更是真正聪明人的选择!
弯路虽然也是路,但还是能少走就少走,背后都是高昂的试错成本。
订阅「福报」,少踩坑,少走弯路,多走一步,就是不一样的胜率!
