如何使用高阶函数计算[Any]类型数组中所有可取值数值的总和
Swift 计算[Any]数组中可转换为有效数值的元素总和
给定[Any]类型数组定义如下:
let array = [1,5,6,"50","Hi",54] as [Any]
可通过compactMap+reduce两个高阶函数组合实现计算,完整代码如下:
let totalSum = array .compactMap { element -> Int? in // 处理原生Int类型元素 if let intValue = element as? Int { return intValue } // 处理可转换为Int的字符串元素 if let stringValue = element as? String, let intValue = Int(stringValue) { return intValue } // 不可转换的元素返回nil,会被自动过滤 return nil } // 累加所有有效数值 .reduce(0, +)
运行后得到的totalSum结果为116。
用到的高阶函数说明:
compactMap:遍历数组所有元素执行自定义转换逻辑,自动丢弃返回值为nil的无效元素,最终得到仅包含有效Int的新数组reduce:以0为初始累加值,遍历有效Int数组完成所有元素的求和计算
内容的提问来源于stack exchange,提问作者Hetali Adhia
相关产品推荐
相关产品推荐

