苹果现在 bug 越来越多的原因找到了

1 天前
 qdwang

这里大家都是程序员,只要做完这个题,就知道为什么苹果会有那么多 bug 了

// 这是一段 swift 代码

var hello = [10, 20, 30, 40, 50, 60]
var foo = hello[2..<5] // 表示索引范围是 2 ,3 ,4
foo[2] = 0
print(foo) 

// 先看看你的程序员直觉,输出结果是什么

然后随便 google 找个 swift playground 运行这段代码,你就知道为什么苹果现在 bug 越来越多了。

10872 次点击
所在节点    Apple
107 条回复
ourstars
1 天前
直觉理解是[30,40,0],但是运行之后是[0,40,50]。
foo 用的是 hello 的索引范围造成了[0,40,50]的结果。
qdwang
1 天前
@ourstars 对,swift 设计了这个反程序员直觉的语义。导致你去问 ai ,也有一大堆 ai 会回答错误。
TianDogK48
1 天前
目测这个语法不常用,所以问题应该不大; go 里面 slice 扩容,也有坑,但是目测 go 的 slice 很少用,都是直接 make
raycool
1 天前
看来都是 slice 的不同理解导致的。
smlcgx
1 天前
这样看起来 swift 更偏向自然语言一点,几就是几
butanediol2d
1 天前
hello 是 Array<Int>
foo 是 ArraySlice<Int>
craftsmanship
1 天前
如此说来 JS 早先那些垃圾设计可能导致的 bug 只会更多。。
xuejianxianzun
1 天前
@craftsmanship 怎么又扯到 js 了,js 在这个场景里没有反直觉的行为。
hash
1 天前
系统层核心实现是一坨屎,与语言设计无关
Building
1 天前
都按直觉那不同语言反人类的语法简直不要太多,当然不影响 Swift String 的设计才是最为逆天的东西
cpstar
1 天前
@xuejianxianzun 8# 以我不动 swift ,和 1#的情况,我觉得基本上就是 js 的逻辑:
foo_js[2]=hello[2]/*30*/,foo_js[3]=hello[3]/*40*/,foo_js[4]=hello[4]/*50*/

foo_js[0]=undefined,foo_js[1]=undefined
于是
foo_js[2]=0 之后,foo_js={"2":0,"3":40,"4":50}
Greendays
1 天前
和语言关系不大的,既然做了开发掌握这个语言的语法是基本要求。Bug 多只是需求超过了能力,不得不赶工和减少测试流程造成的。
Lin0936
1 天前
再逆天的语言也该经过测试啊
june4
1 天前
@craftsmanship js 真没有啥绕不过去的垃圾设计,特别是 ts 上身后,底子非常干净纯洁,现在只有一个日常使用我觉得不爽,就是搞出二个 null/undefined 类型。
xiangyuecn
1 天前
苹果拉的屎就是香,没啥毛病 能咽下去的
freeloop1
1 天前
那个 foreach 的语法我是最蚌埠住的,我总感觉是少写了括号啥的,太难受了。
a33291
1 天前
foo 是 hello 的视图吧? 现在很多语言/库都提供这种东西,减少 copy,不过大部分是只读的比较合理
cookii
1 天前
@a33291 视图通常只读会好一点
fadaixiaohai
1 天前
从 swift6 开始越来越复杂,关键词越搞越多,问题是有些关键词编译器都支持不太好,搞不好就容易 crash ,对新人也不太友好
PlG5sBkXD1ziLeGB
1 天前
swift 的语法真是丑到爆,OC 的语法虽然跟裹脚布一样长,但是可读性非常强

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1168491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX