gpt4 book ai didi

actionscript-3 - AS3 : cast or "as"?

转载 作者:行者123 更新时间:2023-12-03 14:39:24 25 4
gpt4 key购买 nike

两者之间是否存在使用、效率或背景技术方面的差异?

var mc:MovieClip = MovieClip(getChildByName("mc"));


var mc:MovieClip = getChildByName("mc") as MovieClip;

?

选择只是惯例、偏好的问题,还是在某些情况下您不能使用?

最佳答案

This article很好地描述了差异:

A key difference between casting and the as operator is the behavior on failure. When a cast fails in ActionScript 2, null is returned. When a cast fails in ActionScript 3, a TypeError is thrown. With the as operator in ActionScript 3, whenever a cast fails the default value for the datatype is returned.


as还允许您转换到 Array ,这在之前是不可能的,因为转换函数 Array()优先。

编辑:关于性能,使用 as据报道比各种文章中的函数调用样式转换更快:[ 1 ] [ 2 ] [ 3 ]。引用的第一篇文章着眼于深度的性能差异,并报告了 as快 4-4.5 倍。

编辑 2:不仅是 as在正常的最佳情况下快 4-4.5 倍,但是当您包装 (cast) 时在 try-catch 块中进行样式转换,实际上最终会抛出错误,它更像是快了 30 到 230 倍。在 AS3 中,如果您认为自己将做一些特殊的事情(因为它可能会引发错误),那么很明显,您应该始终在跳跃之前查看。除非被 API 强制,否则永远不要使用 try/catch,实际上这意味着永远不要 (cast)即使没有抛出异常,查看 try/catch 的性能影响也是有益的。即使在没有出错的情况下,设置 try/catch 块也会降低性能。

关于actionscript-3 - AS3 : cast or "as"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14268329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com