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