在 Swift 中,冒号后有类型声明有什么作用?

In Swift, what is the effect of having a Type Declaration after the colon?

所以基本上,有什么区别:

var temp1 = NSDictionary()
var temp2:NSDictionary = NSDictionary()

它们的工作原理完全相同。 提前谢谢你。

没有区别。 Swift 有类型推断,所以在你的第一个例子中,类型是从 NSDictionary 推断出来的。在您的第二个示例中,您手动定义了类型,这不是 Swift 的推荐样式,因为在 XCode 中,您始终可以通过单击选项来检查变量的类型,因此没有意义过度指定一切并编写不必要的混乱。

在这种情况下,它根本不重要,但当我做类似的事情时:

var a = self.returnValue()

我更喜欢显式显示类型:

var a : NSValue = self.returnValue()

为了更好的可读性。

在第二种情况下,您明确定义了 temp2 的类型,说它是 NSDictionary。 在第一种情况下,您让编译器推断它是一个 NSDictionary.

在您的具体示例中,没有区别。

但是,如果您这样做:

var temp1 = NSArray()
var temp2: NSDictionary = NSArray()

编译器不会抱怨 temp1,推断它是一个 NSArray,而它会抱怨 temp2,注意到你试图将一个 NSArray 分配给一个 NSDictionary.