如何在Swift的reduce()方法中直接将字符串转换为整数?
优化方案:在reduce中直接完成字符串转整数
没问题!咱们可以直接把字符串转整数的逻辑整合进reduce方法里,省去单独的map步骤,让代码更紧凑,同时还能优化原代码的安全性。
优化后的完整代码
let number: String = "111 15 111" let result = number.components(separatedBy: " ").reduce(0) { sum, str in sum + (Int(str) ?? 0) }
代码解释
reduce的闭包接收两个参数:累加器sum(初始值为0)和分割后的每个字符串元素str- 直接在闭包里把
str转换为Int,用?? 0做兜底处理——这比原代码的!强制解包更安全,避免了字符串无法转成整数时的崩溃问题 - 把转换后的整数加到累加器上,最终得到总和
更简洁的简写形式
如果喜欢更紧凑的写法,还可以用Swift的尾随闭包简写语法:
let result = number.components(separatedBy: " ").reduce(0) { $0 + (Int($1) ?? 0) }
这样既实现了你想要的去掉map的需求,还让代码更健壮,一举两得~
内容的提问来源于stack exchange,提问作者whok mok
相关产品推荐
相关产品推荐

