0
考慮這個通用的方法(只有類型非常重要,沒有它做什麼):將顯式返回值添加到閉包導致編譯器錯誤:編譯器錯誤?
func flatMap<SourceType, TargetType>(source: [SourceType], transform: SourceType [TargetType]) -> [TargetType] {
return []
}
以下方法調用編譯很好:
let seq = flatMap(["some", "string"], { s in [1, 2] })
然而,僅僅增加顯式返回到封閉的情況下編譯錯誤:
let seq = flatMap(["some", "string"], { s in return [1, 2] }) //ERROR: Cannot convert the expression's type ... to type 'StringLiteralConvertible'
編譯器仍然可以按照與第一種情況相同的方式推斷出類型,對嗎?區別在哪裏(我看不到)?如果我需要return
,如何編譯第二個案例?
這看起來像是一個編譯器bug。 – dasblinkenlight 2014-10-10 18:15:54
@dasblinkenlight我也會這麼說。我想驗證它,因爲關於Swift類型系統有幾個我認爲是bug的東西,但是在發佈到SO之後,向我解釋它們意味着它們是如此甚至是特徵。 – drasto 2014-10-10 18:30:19