【发布时间】:2010-11-03 01:07:26
【问题描述】:
根据我对 ActionScript 的理解,有两种类型的强制转换:
var bar0:Bar = someObj as Bar; // "as" casting
var bar1:Bar = Bar(someObj); // "class name" casting (for want of a better name)
另外,如果我在这里错了,请纠正我,as 转换将返回类的实例或 null,而“类名”转换将返回类的实例或引发如果强制转换是不可能的,则例外——除此之外,它们是相同的。
不过,鉴于此,as 强制转换似乎严重违反了 fail-fast-fail-early 原则......而且我很难想象使用@987654325 更可取的情况@ cast 而不是类名转换(可能会在其中抛出instanceof)。
那么,我的问题是:在什么情况下最好使用as 强制转换?
【问题讨论】:
-
请注意,通常有用的后期绑定与您对 fffe 的解释直接冲突。
-
是的,这在 ActionScript 中也是不可避免的,因为没有“泛型”的概念,所以你从容器中得到的东西将是无类型的。
-
(因此最好在
var foo:Foo = Foo(myArray[i])上失败,而不是在其他地方处理 NPX)
标签: actionscript-3