在 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
.
所以基本上,有什么区别:
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
.