谁能解释一下区别
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
。
最后两个 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)
}
关于ios - var someString = “Some String” 和 var someString : String = “Some String” , 之间的区别 var someString = “Some String” as string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678926/