swift - 多次调用函数并快速获取结果列表?
问题描述
我有一个函数func f() -> Int
,我想调用它n: Int
,并获取返回值列表。
在红宝石中,你会这样做n.times.collect { f }
。
swift 有类似的功能方法吗?
目前,我使用以下手工实现:
extension Int {
func collect<T>(f: () -> T) -> [T] {
var l: [T] = []
for _ in 0..<self {
l.append(f())
}
return l
}
}
// Usage
let myList = 42.collect { UIView(frame: self.bounds) }
解决方案
这可能不是您要寻找的答案,但您可以将Range
s 与高阶函数一起使用。
例子:
// a range of 1 to 42
let range = (1...42)
let views1 = range.map { _ in
return UIView(frame: self.bounds)
}
// Shorthand
let views2 = (1...42).map { _ in UIView(frame: self.bounds) }
推荐阅读
- c++ - 为什么所有 openGL 对象都存储在 GLuints 中?
- python - spidev.xfer 和 spidev.xfer2 返回错误数据,重复请求读取寄存器
- javascript - createAsyncThunk 的问题
- reactjs - MUI v5:失败的道具类型:`Grid`的道具`direction`只能与`container`道具一起使用
- ios - 由于 glog,带有一些反应代码的 iOS 构建在 pod 安装时失败
- angular - 如何从其中一个未发出的所有 rxjs 流中获取数据?
- android - 如何放置电子邮件和密码的控制器?
- f# - 是否可以基于具有命名字段的记录编写泛型?
- flutter - 登录失败时的 Snackbar 未显示凭据从不为空的原因,如何解决此问题
- python - 对两个列表排序一个字符串另一个浮点数