gpt4 book ai didi

flash - 有条件地删除对 AS3 中函数的调用,例如 C# 的 ConditionalAttribute

转载 作者:行者123 更新时间:2023-12-01 09:37:32 24 4
gpt4 key购买 nike

在工作中,我们有很多 AS3 代码有条件地执行日志记录或断言,如下所示:

CONFIG::debug
{
assert(blah > 2);
}

我宁愿只写:

assert(blah > 2);

并且让 assert() 的定义指定在 Release模式下,对它的任何调用,及其参数的表达式,都不应该被计算——即是,它应该就像该行是空的。 assert() 不仅不应该在 release 中被调用,而且条件 blah > 2 本身也不应该被评估。

在 C# 中,这看起来像:

[Conditional("DEBUG")]
public static void assert(...) { ... }

或者,在 C++ 中(大致):

#ifdef DEBUG
#define assert(cond) if(!(cond)) { explode(); }
#else
#define assert(cond) /* nothing */
#endif

有没有办法在 AS3 中做类似的事情,或者我们是否必须围绕所有内容进行条件编译 block ?我一直在寻找手册,但没有发现任何有用的东西。

最佳答案

我认为通过像这样注释函数的声明来使 flex 编译器忽略对函数的所有调用是不可能的。事实上,如果你能找到一种方法来做到这一点,我会非常感兴趣 - 这将有助于清理我的项目的源代码......

您可以指定方法的两个版本,如 this example 中所述。 .因此,您可以在调试版本中拥有一个功能齐全的 assert(...args),在发布版本中拥有一个空的,但您仍然会在字节中拥有函数调用和参数评估代码。 :(

关于flash - 有条件地删除对 AS3 中函数的调用,例如 C# 的 ConditionalAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5013002/

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