学 Swift 有感 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuancoder
V2EX    Swift

学 Swift 有感

  •  
  •   yuancoder 2022-05-04 12:20:10 +08:00 5100 次点击
    这是一个创建于 1285 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近看 swift 语法,太想骂人了,东西太多了。

    各种闭包写法,关键词,语法糖。

    看别人的代码,脑子里一堆问号,这都是什么意思。

    这是第一个让我学的想吐的语言。

    31 条回复    2022-08-17 17:34:42 +08:00
    kidlj
        1
    kidlj  
       2022-05-04 12:50:18 +08:00 via iPhone   1
    Java: 我只有 class
    Go: 我只有 struct
    Swift: 嘿嘿 我全都要!
    icyalala
        2
    icyalala  
       2022-05-04 12:53:39 +08:00   2
    糖少嫌淡,糖多嫌
    cssk
        3
    cssk  
       2022-05-04 13:00:36 +08:00 via iPhone
    写完 oc 写 swift ,太 tm 舒服了
    akring
        4
    akring  
       2022-05-04 13:39:40 +08:00   2
    建议先接受 Objective-C 治疗,脱敏后再来看 Swift
    Livid
        5
    Livid  
    MOD
    PRO
       2022-05-04 13:43:01 +08:00   1
    无论你学一门语言的目的是为了吐槽它还是用它实际做出东西来,Swift 都可以满足你。
    yuancoder
        6
    yuancoder  
    OP
       2022-05-04 13:44:34 +08:00
    @cssk #3
    @akring #4

    就是看了 oc 的代码,才决定学习 swift
    yuancoder
        7
    yuancoder  
    OP
       2022-05-04 13:45:19 +08:00
    @kidlj #1

    别的语言有的它都有,别的语言没有的它还有。
    yuancoder
        8
    yuancoder  
    OP
       2022-05-04 13:46:08 +08:00
    @Livid #5

    学完 swift ,再也不怕学别的了。
    fredli
        9
    fredli  
       2022-05-04 13:54:00 +08:00
    为了学而学,看不到用处
    WildCat
        10
    WildCat  
       2022-05-04 14:01:07 +08:00
    Rust 和 C++ 比 Swift 学习曲线陡峭多了。
    basefas
        11
    basefas  
       2022-05-04 14:05:26 +08:00
    我觉得 swift 像是文科生设计出来的语言,比较「浪漫」(中性词),他想的不是怎么方便开发,怎么方便工程化,就是考虑怎么写出来比较「看起来优雅」的这么一种语言。目前也在学 swift ,一样的感觉,哈哈。
    tyx1703
        12
    tyx1703  
       2022-05-04 14:07:26 +08:00
    确实,语法糖太多了
    sxeuosme
        13
    sxeuosme  
       2022-05-04 14:12:45 +08:00 via iPhone
    @yuancoder 你住的地方有 Swift 的就业机会吗。真的很稀缺
    yuancoder
        14
    yuancoder  
    OP
       2022-05-04 14:14:45 +08:00
    @sxeuosme #13 我学是为了自己写应用,不是为了就业。
    Buges
        15
    Buges  
       2022-05-04 14:22:00 +08:00 via Android
    Swift 语言本身还是不错的,不过是现代语言中唯一一个「不跨平台」的,继承了果系一贯传统。
    (不是能跑就叫跨平台,工具链、标准库、相应生态都不行)
    yuancoder
        16
    yuancoder  
    OP
       2022-05-04 14:35:12 +08:00
    @basefas #11 感觉这语言已经不受控了,没有一个核心的设计思想,什么都想要。

    像 java 的一切皆对象,go 的少即是多, 都有一些核心的设计原则,swift 呢,大杂烩。
    eternaljust
        17
    eternaljust  
       2022-05-04 15:00:34 +08:00   1
    @yuancoder 如果你就写自己的应用,可以直接学 SwiftUI 来快速开发 App ,声明式 UI 比命令式 UI 便捷太多,也是苹果这两年主推的。这样你就可以在上手过程中慢慢就把 Swift 相关的语法熟悉了。
    lawler
        18
    lawler  
       2022-05-04 15:47:56 +08:00
    所以我选 flutter
    anxiousPumpkin
        19
    anxiousPumpkin  
       2022-05-04 15:54:10 +08:00
    我也在学习中,发现跟 kotlin 和 flutter 还是有蛮多相似点的
    echo1937
        20
    echo1937  
       2022-05-04 16:25:45 +08:00
    @Buges #15 Swift 的工具链和标准库不跨平台?
    yuancoder
        21
    yuancoder  
    OP
       2022-05-04 16:31:49 +08:00
    @eternaljust #17 就是发现 swiftui 看不懂,才开始学习 swift [二哈]
    impl
        22
    impl  
       2022-05-04 20:58:03 +08:00 via Android
    kotlin 也是
    Removable
        23
    Removable  
       2022-05-04 22:37:09 +08:00 via iPhone
    @yuancoder 推荐《 SwiftUI by Tutorials 》这本书,跟着学挺好的
    Buges
        24
    Buges  
       2022-05-05 00:11:54 +08:00 via Android
    @echo1937 不是能跑就叫跨平台的,你看看目前市面上有真正的 Swift 编写的跨平台应用吗?
    agagega
        25
    agagega  
       2022-05-05 01:21:58 +08:00 via iPhone
    Swift 早期的设计思路还是很明确的:在不至于混淆的时候加糖,在可能引发潜在 bug 的地方加盐(比如要求显式转换)。后来就越来越放飞自我了。另外兼容 OC 也是 Swift 的一个负担,否则能少很多奇怪的点。(毕竟 OC 也是个奇怪的语言)

    Swift 在 Apple 生态圈之外推不开和 Apple 的态度也有很大关系。但凡他们有微软推 C#一半的热情,Swift 也要比今天火得多。
    agagega
        26
    agagega  
       2022-05-05 01:24:58 +08:00 via iPhone
    @agagega
    SwiftUI 这个框架本身有很精彩的设计思路。但是毫无疑问,苹果为实现 SwiftUI 加了很多专用语法,甚至是先发布+内部实现了再拿到社区来走过场,过于激进了些。
    chipmuck
        27
    chipmuck  
       2022-05-05 17:34:27 +08:00
    Swift Closure: https://docs.swift.org/swift-book/LanguageGuide/Closures.html

    其实以闭包来说,官方文档很好地解构了「为什么 Swift 闭包花样那么多?」的这个问题,且文档对闭包的省略都是逐步、并且有理有据的。
    yuancoder
        28
    yuancoder  
    OP
       2022-05-05 21:44:49 +08:00
    @chipmuck #27 除了增加学习成本,和阅读成本之外,没感觉到有什么意义。
    Bruce2077
        29
    Bruce2077  
       2022-05-18 15:43:09 +08:00
    Chris Lattner 都难逃“劣币驱逐良币”,目前确实有些失控。。。
    ravenZ
        30
    ravenZ  
       2022-08-17 17:13:52 +08:00
    @agagega 抱歉挖了个坟.... 因为我搜索了,思考了也没能理解什么叫做加盐.. 加糖看含义上应该是加了语法糖.. 但是盐更明确的意义指的是什么 呢?
    agagega
        31
    agagega  
       2022-08-17 17:34:42 +08:00 via iPhone
    @ravenZ
    比如 C 语言里有大量的隐式类型转换,早期的 C 甚至可以在指针和整数间随便转没任何警告。现在大家意识到语言应该限制程序员这样做,转换的时候要显式加上标记。这样程序的语义没任何变化,但为了避免潜在 bug 和提高可读性,要写的东西变多了,这就叫加盐。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     945 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 18:28 PVG 02:28 LAX 10:28 JFK 13:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86