关于Swift的几个不同的教程并注意到了这种差异。是否存在两条线路功能不同的情况,或者这更像是一种风格偏好?
var newString:NSString = "Test String"
和
var newString = "Test String" as NSString
答案 0 :(得分:4)
不同之处在于,在第一种情况下,您将变量声明为类型NSString
,因此它将是NSString类型,使用字符串文字初始化。 (要么编译器执行从快速String
类型到NSString
的隐式转换,要么文字本身是无类型的 - 我实际上并不确定这个。)
在第二种情况下,您没有明确声明变量的类型。相反,您执行从String
文字到NSString
的显式转换,因此初始化表达式本身具有类型NSString
。因此,类型推断将告诉编译器变量的类型也是NSString
。
这两个案例的总体结果应该是相似的(如果不是相同的,则以实际转换的成本为模,如果有的话)。
答案 1 :(得分:0)
在这种情况下没有功能差异。它仅仅是在变量声明中显式声明的变量类型与从初始值隐式推断的变量类型之间的区别。无论哪种方式,这个变量都会得到一个类型,这才是最重要的。
(但是,还有其他情况需要明确声明。)