所以我在写代码来区分我的应用程序的多个版本:为什么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:仅在“单表达式关闭”时才会自动推断返回类型。 –