swift - Swift 4.2 闭包
问题描述
嗨,我正在快速学习我有一个关于用于过滤集合的闭包的练习
我有两个简单的闭包,用于过滤和映射字典
let myDict: [String: Int] = ["Dan":38, "Kira":2, "Olga":33, "Jess":10, "Bobo":4]
let filteredMyDict = myDict.filter {
return $0.value < 5
}
print(filteredMyDict)
let filteredNames = filteredMyDict.map {
return $0.key
}
print(filteredNames)
是否可以链接过滤器和映射语句,如果可以的话。
那
解决方案
你可以链接filter
和map
let filteredNames = myDict.filter { $0.value < 5 }
.map { $0.key }
或用于compactMap
通过字典的单次遍历获得结果:
返回一个数组,其中包含使用此序列的每个元素调用给定转换的非零结果。
在你的情况下:
let filteredNames = myDict.compactMap {
$0.value < 5 ? $0.key : nil
}
推荐阅读
- php - 使用 PHP 获取签名的 id_token
- .htaccess - htaccess 通过从 URL 中提取 ID 将静态重定向到动态
- powershell - Powershell - 将 csv 值导出到特定列
- php - PHP类私有属性转换为json时为空
- firebase - 如何仅从特定父集合中查询特定 id 的子集合?
- c++ - 如何返回向量的常量引用?
- java - 如何访问数组名称以获取列表?
- excel - 如果单元格具有可以在另一张表中找到的相同值,则在单元格中写入随机值
- html - 如何在没有javascript的选择框选项中选择时显示和隐藏文本
- erlang - 在 Elixir 中比较地图的方法