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"]
让我们看看工作示例:
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"]