Swift:是否可以在没有 return 的情况下使用循环创建匿名函数?

Swift: Is it possible to create anonymous function with loop without return?

让我们看看工作示例:

let numbers: [Int] = {
    var num:[Int] = []
    for i in 0...3{
        num.append(i)
    }
    return num
}()

是否可以避免在 vars 中保存状态并直接 return 生成值?
就像在这个例子中一样(我想要所有 i returned in []):

let numbers: [Int] = {
  for i in 0...3{
        i
    }
}()

这会在最后一行产生错误 Missing return in a closure expected to return '[Int]'

在这种特殊情况下,以下内容就足够了:

let numbers = Array(0...3)

对于一般情况,例如,而不是:

let numbers2: [String] = {
    var ret: [String] = []
    for i in 0...3 {
        ret.append(join("", Repeat(count: i, repeatedValue: "\(i)")))
    }
    return ret
}()
// -> ["", "1", "22", "333"]

您可以使用 map:

let numbers: [String] = map(0...3) { i in
    join("", Repeat(count: i, repeatedValue: "\(i)"))
}
// -> ["", "1", "22", "333"]