2015-09-04 27 views
1

讓我們來看看工作示例:Swift:有沒有可能創建匿名函數循環沒有返回?

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

是否有可能避免保存狀態VAR和直接返回產生的值?
就像這個例子(我希望所有i[]返回):

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

這將產生錯誤的最後一行 Missing return in a closure expected to return '[Int]'

+1

是的,如果你cange'[INT]''到Void' –

+0

刪除':[INT]'在第一線和添加'() - >()在第2行幫助,但我如何得到所有與循環產生的價值? – abrasadera

回答

2

在這種特殊情況下,以下就足夠了:

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"] 
+0

Thx的答案 - 我有更復雜的問題 - 只是簡單的例子SO問題:)但'地圖'可以以某種方式幫助 – abrasadera

相關問題