是否有任何特定资源可以证明可以在 Swift 中推断出哪些值?

Is there any particular resource that demonstrates which values can be inferred in Swift?

例如:

let myConstant = 4

上面的常量的值可以推断出来

我们怎么知道一个值是否可以推断出来?

一般来说,如果知道expression求值的类型,就可以推断出x的类型:

let x = <expression>

在您的示例中,整数文字 4 被评估为 Int,因此 myConstant 的类型被推断为 Int

另一个例子:

func f() -> String { return "Foo" }
let x = f()

可以推断x的类型,因为我们通过查看其声明知道f将return的类型,String.

对于更复杂的表达式,这仍然适用。编译器将查看每个子表达式求值的类型,并进行分析以确定表达式最终求值的类型。

但是,有时无法做到这一点:

func f<T>() -> T? { return nil }
let x = f()

f 可以 return 任何类型,但您没有指定任何类型。 T 未知,因此 f 的 return 类型未知,因此无法推断 x 的类型。