所以我在寫代碼來區分我的應用程序的多個版本:爲什麼Swift編譯器不能推斷這個閉包的類型?
static var jsonURLNL = {
if ProcessInfo.processInfo.environment["CONSUMER"] != nil {
return URL(string: "consumerURL")!
}
return URL(string: "professionalURL")!
}()
但我得到一個編譯器錯誤:
Unable to infer complex closure return type; add explicit type to disambiguate
爲什麼不能斯威夫特編譯器知道這會返回一個URL
?在這種情況下,我認爲這很明顯。
我對這個問題的目標不是對Xcode或Swift進行批評,而是增加我對編譯器如何在Swift中推斷類型的知識。
有關此問題的某些詳細信息,請參見[本報告](https://bugs.swift.org/browse/SR-1570)。 – DrummerB
比較http://stackoverflow.com/a/34115788/1187415或http://stackoverflow.com/a/42213785/1187415:僅在「單表達式關閉」時纔會自動推斷返回類型。 –