2 weixin 40022331 weixin_40022331 于 2017.08.30 09:00 提问

Swift统计一组数中各数出现的次数问题

本人Swift初学者,有个问题想请教下。有以下代码

var occurrences: [Int : Int] = [:]
for number in numbers {    
if var value = occurrences[number] {        
occurrences[number] = ++value     
} else {        
occurrences[number] = 1     
}
}

numbers是前一个函数的参数。value是number出现的次数。

语句读的懂,但实在看不明白。求大神解释一下。谢谢!

1个回答

qq_34658785
qq_34658785   2017.08.30 09:09
已采纳

var occurrences: [Int : Int] = [:] 声明一个字典
for number in numbers { 遍历需要统计的数组
if var value = occurrences[number] { 从字典里取出数组对应数字
occurrences[number] = ++value 如果字典里出现了这个数字则++value统计数字
} else {

occurrences[number] = 1 如果字典里没有这个数字,则证明是第一次统计这个数赋值为1
}
}

weixin_40022331
weixin_40022331 回复卖太妃糖的古尔丹: 懂了!非常感谢!!
3 个月之前 回复
qq_34658785
qq_34658785 回复weixin_40022331: 不是比较,是从occurrences字典里,根据number这个key取值,如果没有这个key,则会返回null,null为假则会进入else语句块,occurrences[number]=1,在赋值的时候,如果字典里没有number这个key,则会自动生成这个key,并设置它的值为1,下一次,再发现,number这个key,说明这个数字出现过,则对它的值进行++,就可以统计出现次数了
3 个月之前 回复
weixin_40022331
weixin_40022331 主要是if var value = occurrences[number]这句,是把number在数组中对应的值赋给value吗?还是只是比较?如果是比较,那value的值是哪里来的呢?
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片