告诉Swift编译器一个对象的类型,而不是推断?

jus*_*lbs 8 variable-declaration ios swift

我已经做了几个月的Swift编程了,我一直很好奇这个......

告诉Swift编译器声明中对象的类型是否有优势?即let image: UIImage = UIImage()

与不告诉编译器并让它在运行时推断类型相比.即let image = UIImage()

我认为告诉编译器对象类型而不是推断它的类型会更有效.我知道这个问题也适用于Objective-C语法,所以我会在标签中添加它.

Air*_*ity 10

两者之间的运行效率差异为零.在编译期间,Swift会推断出类型并为您编写代码.但一旦编译,这两个陈述是相同的.

这纯粹是一个可读性问题,偶尔也会是编译器效率问题.

可读性因为在声明中let image: UIImage = UIImage(),双重外观UIImage只是杂乱无章.在更复杂的类型的情况下,它非常重要 - 没有人想let keys: LazyForwardCollection<MapCollectionView<Dictionary<String, Int>, String>> = dict.keys在他们可以写的时候写let keys = dict.keys.

编译器效率,因为偶尔你会发现一个特别暧昧的类型(文本的文字是臭名昭著的这个),其中大量重载的需要解决的问题可以编译很多更快,如果你明确地命名在左侧的类型.但这只是一个问题,它编译的速度有多快,而不是编译后运行的速度有多快.