多次调用一个函数并快速获取结果列表?

Jer*_*hoy 2 swift

我有一个函数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)

Zon*_*ame 5

这可能不是您正在寻找的答案,但您可以将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)