as
运营商期望什么作为右侧参数?
为什么不接受ClassName.self
或variableName.dynamicType
?
我的问题归结为.self
,.dynamicType
和真正的类名之间的区别?
答案 0 :(得分:4)
SUM
运算符期望 static Type作为右手参数。这里的单词 static 表示编译器在编译时已知的东西。
as
和.self
都是表达式 s,因此.dynamicType
运营商不期望这样做。表达式在运行时进行评估。如果是as
和.self
,则会在评估后返回“类型”。
无论如何,.dynamicType
运算符并不期望某些东西被评估为右手参数,而是“硬编码”类型。此功能允许Swift强制执行编译时检查。
希望这是有道理的。