美文网首页
Swift 字典2: 常用高阶函数

Swift 字典2: 常用高阶函数

作者: YourSummer | 来源:发表于2022-05-17 10:56 被阅读0次
    1. 特殊属性
    // 是否是空字典 返回Bool
    let isEmpty = dic.isEmpty
    
    // 键值对数量
    let count = dic.count
    
    2. map: 转换
    var dic: [String: Any] = [
        "key_0": 1,
        "key_1": "String"
    ]
    
    //1. 将所有key转换成一个数组返回
    let keys = dic.map { (item) -> String in
        return item.key
    }
    print(keys)
    log 结果: ["key_1", "key_0"]
    
    //2. 将所有value转换成一个字符串数组返回
    let values = dic.map { (item) -> String in
        return item.value as? String ?? ""
    }
    print(values)
    // 仅仅转换value, 标准库提供了单独方法
    let values = dic.mapValues { (item) -> String in
        return item as? String ?? ""
    }
    print(values)
    
    3. filter: 过滤
    // 筛选出 key == "key_0" 的键值对
    let newDic = dic.filter { (item) -> Bool in
        item.key == "key_0"
    }
    
    // 简化写法
    let newDic = dic.filter { $0.key == "key_0" }
    print(newDic)
    
    4. merge: 合并
    var dic: [String: Any] = [
        "key_0": 1,
        "key_1": "String"
    ]
    
    var dic_0: [String: Any] = [
        "key_1": false,
        "key_3": 1,
        "key_4": "String"
    ]
    
    // 将dic 合并到 dic_0, 如果有相同的key, 会以dic为准
    //1. 改变dic_0
    dic_0.merge(dic) { $1 }
    print(dic_0)
    // log 结果: ["key_0": 1, "key_4": "String", "key_3": 1, "key_1": "String"]
    
    //2.不改变dic_0, 返回新的字典
    let mergeDic = dic_0.merging(dic) { $1 }
    print(mergeDic)
    // log 结果: ["key_0": 1, "key_4": "String", "key_3": 1, "key_1": "String"]
    
    持续更新......

    相关文章

      网友评论

          本文标题:Swift 字典2: 常用高阶函数

          本文链接:https://www.haomeiwen.com/subject/fxywurtx.html