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绝对是错误的。 没有必要将String
为String
。
而最后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) }