qdwang
V2EX  ›  Apple

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

  •  
  •   qdwang · Oct 26, 2025 · 14891 views
    This topic created in 227 days ago, the information mentioned may be changed or developed.

    这里大家都是程序员,只要做完这个题,就知道为什么苹果会有那么多 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 越来越多了。

    109 replies    2025-10-28 18:48:00 +08:00
    1  2  
    liuhan907
        101
    liuhan907  
       Oct 28, 2025
    @volvo007 这里的问题核心不是修改了原数组,而是新切片的索引任然遵循的是原数组的索引
    Torpedo
        102
    Torpedo  
       Oct 28, 2025
    @june4 #94 一般最好都用 null 。undefined json 不支持 。而且 undefined 容易和 {xxxx?:number} 混淆
    freedomin
        103
    freedomin  
       Oct 28, 2025
    结果要是[20, 0, 40]我还勉强能理解,[0, 40, 50]我是真理解不了
    june4
        104
    june4  
       Oct 28, 2025
    @Torpedo 相反,一般只用 undefined 比较好。ts 官方团队也是推荐只用 undefined 。
    volvo007
        105
    volvo007  
       Oct 28, 2025 via iPhone
    volvo007
        106
    volvo007  
       Oct 28, 2025 via iPhone
    @XIVN1987 我 py 白学了😂,你是对的。哪个语言会两边都改来着? go ?我试了下 np 下切片和原数组是一样的,当然这是另一种实现了

    >>> a = np.arange(0,100,10)
    >>> a
    array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
    >>> b = a[4:7]
    >>> b
    array([40, 50, 60])
    >>> b[0] = 0
    >>> b
    array([ 0, 50, 60])
    >>> a
    array([ 0, 10, 20, 30, 0, 50, 60, 70, 80, 90])
    volvo007
        107
    volvo007  
       Oct 28, 2025 via iPhone
    @liuhan907 🤦还真没注意,那岂不是说如果切片比较长,我还要自己算偏移量……有点难绷
    HtPM
        108
    HtPM  
       Oct 28, 2025
    其实并不反直觉,这是底层性能优化而已,数组赋值肯定是赋值的底层指针(引用)呀,不管是 java ,c 还是 c++,这都是默认行为。如果按照你的直觉:所有对象赋值都是新建一份内存然后深拷贝,那栈不得爆了?虽然我对 swift 的语法没你那么熟,但语言都是相通的。
    Torpedo
        109
    Torpedo  
       Oct 28, 2025
    @june4 #104 为什么呢
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3306 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 11:44 · PVG 19:44 · LAX 04:44 · JFK 07:44
    ♥ Do have faith in what you're doing.