在swift 2.0之前的早些时候,我们正在使用" as"类型转换的关键字,但现在告诉我将其转换为" as!"在某些地方为什么?
答案 0 :(得分:3)
在Swift 1.2中进行了更改
as!运营商
在Swift 1.2之前,可以使用
as
运算符 进行两种不同的转换,具体取决于类型 正在转换的表达式以及它被转换为的类型:保证将一种类型的价值转换为另一种类型,其成功 可以通过Swift编译器进行验证。例如,向上转播(即 从类转换为其超类之一)或指定 文字表达的类型(例如,
1 as Float
)。强制转换 一个值到另一个,Swift无法保证其安全性 编译器,可能会导致运行时陷阱。例如,向下转型, 从类转换为其子类之一。 Swift 1.2分离 保证转换和强制转换为两个的概念 不同的运营商保证转换仍然使用as
运算符,但强制转换现在使用as!
运算符。!
是。{ 意味着转换可能会失败。这样,你就知道了 一目了然哪些转换可能导致程序崩溃。注意表达式后缀运算符
之间的类比!
和?
以及转换运算符as!
和as?