看一些第三方库,眼花缭乱,啥写法都有。 论闭包的无数种实现形式。 语法糖的设计是不是太多了,各种各样,用力过猛并不利于一门新语言的推广啊。。 还是说,我太菜了?
![]() |
1
Leonard 131 天前
语法糖是真的多,感觉有点没必要
|
2
991894172 131 天前
我觉得自己入门了 Swift ,可是又觉得又很多语法糖的写法,感觉越来越复杂了
|
3
anonydmer 131 天前
语言特性多,语法糖也多;学起来是真费劲不说看别人代码也费劲
|
4
jasonchen168 131 天前
确实有点,几个月不写,感觉自己都看不懂了。。。
|
![]() |
5
Kasumi20 131 天前
Java 请
|
![]() |
6
janxin 131 天前 ![]() 糖少了你们嫌特性不足,过于原始
糖多了你们嫌太甜了,学起来太难 说的是谁大家都有数吧(狗头保命 |
7
yuancoder 131 天前
我的理解是这么设计主要是为了简化 ui 的写法,确实变得更复杂了
|
![]() |
8
finab 131 天前
但写起来爽啊
|
![]() |
9
cmdOptionKana 131 天前
@janxin 大道至简🐶
|
11
Lin0936 131 天前
swift 用力过猛的话
kotlin 就是已经扯着蛋了 |
![]() |
12
xtinput 131 天前
那也只是三方库在秀操作,就拿 rx 来说,好好的 swift 硬是被它搞成了另外一个语言!维护的人估计没几个不骂的,但用的还是那么多···· 苹果在强化对象类型安全,而它硬把各种实体类再装一个箱子。定位问题的时候跑遍整个项目都不一定能找到
|
13
yazinnnn 131 天前
往好处想,会了 swift 就等于会了 kotlin / c# / f# / typescript 了,不也挺好吗
|
16
Jooooooooo 131 天前
又要说了, 一种功能只有一种写法是绝对优点. 有一百种写法是不是要学一百遍.
|
17
jackbrother 131 天前
swift 的字符串操作有多繁琐,不用我说了吧 QAQ
|
18
js8510 131 天前
是的。尤其是贵司的代码。。属于后端,偶尔(一年一两次)需要写 react.js 。每次动手前都要学新轮子。反正对于我,大大降低了我的开发效率。。最近学的新轮子是: https://relay.dev/
|
![]() |
19
Chad0000 131 天前
Swift 的版本兼容问题,也不用我多说了吧。作为一个新入门者,头一次遇到网上搜索的写法不对,然后才发现版本差距这么大。对于一个写了十多年 C#的人来说不知如何吐槽。
|
20
MX123 131 天前
我就想知道,int 为什么不能和 double 做运算!
|
21
Leviathann 131 天前
@Lin0936 kotlin 哪有 swift 复杂
kotlin 只有末尾 lambda 可以提出来,swift 好像每个都能提出来 kotlin 类型系统大概就是 java 那套,融合一些 c#的简写( in out ) swift 的类型系统要更复杂 |
22
HeapOverflow 131 天前 ![]() Dart 就是我心目中的理想语言,语法糖不多不少刚刚好,多线程有 future async await 还自带 stream 方便 reactive programming ,方法参数的语法灵活让代码更加可读,类型 constructor 可以跟随 assert 对检测参数合法性,等等
|
![]() |
23
agagega 131 天前 via iPhone ![]() 然而 Swift 的理念之一还是 keep things explicit ,花样多不代表坑就多,只能说这几年确实用力猛了点。
@jackbrother Swift 的字符串操作繁琐是因为字符串涉及到不定长编码,本来就该这样,Rust 的字符串也不能直接用下标访问字符。 |
![]() |
24
debuggerx 131 天前
@HeapOverflow +1
个人向语言喜好 as3 dart ts python es6 go es5 c java kt shell swift php c++ oc |
25
jackbrother 131 天前
@agagega 但是大部分人基本上碰不到不定长编码
|
![]() |
26
icyalala 131 天前
@jackbrother Swift 、Rust 字符串底层都是 UTF-8 存储的,中英混合那就算是不定长编码了。
要是像 Java 等旧些语言那样,用 UTF-16 编码,那碰到个 emoji 也算不定长的了。 除非都用 UTF-32 ,才能直接用下标。 |
![]() |
27
Building 131 天前 via iPhone
你说它不智能吧: numbers.sort { < }
// 遵循对比协议,所以一个符号就可以了 你说它智能吧: let a = 2, let b = a + 1.0 // 错误! a 被推断为整型,请改为 let a: Float = 2 |
![]() |
28
ksco 131 天前
Swift 之父 Chris Lattner 已经离开 Swift 核心团队了。
|
![]() |
29
a4854857 131 天前
害.我还以为你说 switch 设计很超前大家都抄这种游戏机呢
|
![]() |
30
MakHoCheung 131 天前
是写的人喜欢龙飞凤舞,Kotlin 也一样可以龙飞凤舞
|
![]() |
31
BenX 131 天前 via Android
不是一两天的问题了,就是语法糖花活太多,不玩 Swift 了
|
![]() |
32
xtinput 131 天前
@Chad0000 那是直接没稳定,现在没这个问题了
@MakHoCheung 是的,我感觉也是因为写的人个人爱好 @Building 类型安全,系统只提供了最基本的,要不报错自己扩展实现类型兼容就 OK 了 |
![]() |
33
lpvekk 131 天前
创始人都 goodbye 了 确实 swift 被一群菜鸡搞得越来越烂
|
34
Ryanxxx 131 天前
各位老哥能举点例子吗?就是贴代码片段的那种
|
35
HeapOverflow 131 天前 via iPhone
@Ryanxxx 你可以网上查一查 swift 闭包写法大全,可以出书了
|
36
Ryanxxx 131 天前
@HeapOverflow 好的,谢谢老哥
|
37
okakuyang 131 天前
swift 不就有一个多尾闭包,我觉得很爽啊。
|
![]() |
38
wanguorui123 131 天前
论过度设计
|
39
zjddp 131 天前
Use Swift, Learn EVERY Year. ;(
|
![]() |
40
Alexc 131 天前
我做 Android 的,没用过 swift ,但我感觉 kotlin 语法糖太多了,花里胡哨的,这样会让人觉得这门语言很复杂。
|
![]() |
42
huage2580 131 天前
|
![]() |
43
BrettD 131 天前 via iPhone
@jackbrother UTF-8 就是不定长编码
|
![]() |
44
Bijiabo 131 天前
感觉过于花里胡哨... ...
|
![]() |
45
Mohanson 131 天前 ![]() 如果你站在编程语言的开发者角度看问题, 你会发现给一门现成的语言加语法糖的开发工作是非常小的: 加语言糖属于编程语言的前端的前端, 只涉及到 parser 和 tokenizer 两个初学者模块, 属于 "简单, 代码成果容易展现, 同时容易在社区中吹牛" 的工作.
相反, 如果你去钻研如何提升编译速度, 或者进行后端优化提升运行性能, 这部分工作通常较难, 花费更多时间, 同时在社区中不容易被认可: 对于大多数用这门语言的人来说他看不懂也不是很在乎. 所以很多情况下随着一门语言的发展, 这个语言的开发团队中会混入越来越多的 "语法糖开发者", 而一旦创始人控制力变弱, 成为所谓的 "社区性语言", 那么这门语言就会不可避免的往语法糖的路上越走越远(很多社区中的人都是带着目的参与项目的, 为了刷 PR 美化简历, 他们只在乎自己是否能成为这个项目的贡献者, 贡献多少个 PR 和代码行数, 所以就专挑最简单的事情做, 对于一门语言来说语法糖毫无疑问是最简单的工作). |
46
mineralsalt 131 天前
@Mohanson 所以说 java 被甲骨文控制着, 这么多年都没烂, 也是有功劳的
|
![]() |
47
Features 131 天前
多得过 es6++吗?
|
![]() |
48
Building 131 天前 via iPhone
@Mohanson Swift 光是几个简单数做运算,都能把 CPU 卡死的操作……Swift 5 还能遇到,全靠 CPU 硬撑,已经不敢让编译器算了,老老实实自己算好
|
49
dusu 130 天前 via iPhone
@HeapOverflow 近些年写的语言里 心目中也是 dart 排第一 写起来真心舒服
|
![]() |
50
7gugu 130 天前 via iPhone
是的,入门很困惑,各种写法各种简写
|
![]() |
52
MakHoCheung 130 天前
@mineralsalt Java 可不是 Oracle 说了算的,人家有个 JCP ,通过投票来决定的 Java 的走向
|
53
nigulasida 130 天前 ![]() iOS 开发这个行业,最迟到明年必死。
这个行业死了,swift 也基本歇菜了。 |
![]() |
54
caisanli 130 天前 via iPhone
最近新学 swift 看到闭包那节 就想这么多种写法 好接手吗
|
![]() |
57
Cbdy 130 天前 via Android
和 OC 完全是两个极端
|
![]() |
58
x1aoYao 130 天前
我曾一度认为,Swift 就是我理想中的语言。
目前还是期待下 Swift6 的 ownership 吧,现在的 ARC 以及 CoW 全都要原子操作,性能实在是费拉不堪。 独占访问内存设计不好用还降低性能。 |
![]() |
59
x1aoYao 130 天前
@MakHoCheung 我感觉 Java 都比 Swift 开放,Swift 几乎就是苹果的语言。甚至还限制 Swift 在 Apple 平台静态链接标准库。
|
![]() |
60
wupher 130 天前 ![]() 作者也这么想,可惜最终离开了
https://instant.lvv2.com/html/52ae57c594a25b355bb8723ddbe80a9b.html 他关于语法糖 的比喻我倒是蛮赞同的: Lattner 认为一门编程语言的主要功能相当于盖房子时的“砖”,语法糖相当于填砖缝的“灰浆”。如果房子主体都盖好了去填缝没啥问题。如果砖还没摆全就先抹了大量的浆,那整个房子成了用浆盖起来的,结构不会牢固,以后再想摆砖头也找不到合适的地放了。 |
![]() |
62
dadachen1997 130 天前
@nigulasida 那以后用啥开发 iOS app 呢? hybrid 的 RN 或者 flutter ?
|
63
xz410236056 130 天前
swift 我觉得比较麻烦的是关键字是真的多。。。当然这些扩展功能你都可以不用,他们设计原则就是老少咸宜,你需求简单,就用基本功能,需要高级功能他也支持,这样不是很好吗。
|
![]() |
64
onevcat 130 天前 ![]() 是的!学不动了!😂
不过闭包的“无数种”形式不都是同一种形式的不断简化么...知其所以然就不会有困惑了..233 |
65
jackbrother 130 天前 ![]() @nigulasida 如果明年不死怎么办?
|
![]() |
66
chisj 130 天前
喵神都说学不动了吗?😂😂
|
67
nigulasida 130 天前
@jackbrother 今年 iOS 岗位大面积下降,不足上一年的十分之一
|
69
jackbrother 129 天前
@nigulasida 拿出数据源来
|