var someString =“Some String”,var someString:String =“Some String”,var someString =“Some String”as string

任何人都可以解释我的区别

var someString = “Some String” var someString: String = “Some String” var someString = “Some String” as String var someString = “Some String” as! String var someString = “Some String” as? String 

 let someString = “Some String” let someString: String = “Some String” 

对于这两个:

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

 let someString = “Some String” as String 

表示如果不是字符串,则将someString值转换为字符串。

 let someString = “Some String” as! String 

意味着您强行将“Some String”强制转换为字符串,但如果它不能转换为字符串则会使应用程序崩溃。

 let someString = “Some String” as? String 

意味着您可选择将“Some String”为字符串意味着如果它不能转换为字符串,那么它将返回nil但此时不会崩溃。

对于最后3个语句它将编译和工作,但将String转换为String绝对是错误的。 没有必要将StringString

而最后2个as?as! 在你的情况下总会成功。

考虑下面的例子:

 let stringObject: AnyObject = "Some String" let someString3 = stringObject as! String let someString5 = stringObject as? String 

这是你需要施展的时候。 as! 只有你知道它是一个字符串。 as? 如果你不知道它将是字符串或不。

只强迫贬低as! 如果您确定否则使用这样的条件转换:

 if let someString5 = stringObject as? String { println(someString5) }