You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift代码疑问:为何执行结果返回2而非预期的1?

Swift代码执行结果解析

我们一步步拆解代码的执行逻辑:

  1. 传入的nums是[Int?]?类型,值为[nil, nil],所以integersArr不为空,integersArr?.randomElement()会正常执行。
  2. randomElement()从数组中随机取出一个元素,数组内的元素都是Int?类型的nil,因此这个表达式的结果是双重可选类型Int??,具体值为.some(nil)——也就是外层可选容器里包裹着一个nil。
  3. 第一个空合运算符?? 1:空合运算符的触发条件是左侧表达式为完全的nil(即外层可选为.none)。当前左侧是.some(nil),并非完全的nil,所以这个运算的结果是Int?类型的nil。
  4. 第二个空合运算符?? 2:此时左侧是Int?类型的nil,满足空合运算符的触发条件,因此最终返回2。

如果想让第一个?? 1生效,需要让integersArr?.randomElement()返回完全的nil,比如将nums设为nil,或者赋值为空数组[](此时randomElement()会返回nil),这时第一个??会返回1,最终结果就是1。

内容的提问来源于stack exchange,提问作者Rajbeer Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:15:57