我有一个函数func f() -> Int,我想n: Int多次调用它,并获取返回值的列表。
在 ruby 中,你会这样做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) }
Run Code Online (Sandbox Code Playgroud)
这可能不是您正在寻找的答案,但您可以将Ranges 与高阶函数一起使用。
例子:
// 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) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |