gpt4 book ai didi

actionscript-3 - AS3 : declaring an "undefined" parameter for int, uint 或数字

转载 作者:行者123 更新时间:2023-12-03 16:19:46 24 4
gpt4 key购买 nike

我想实现以下逻辑:

function setMyValue (myVar:int = undefined):void
{
if (myVar == undefined)
{
/* Generate a value for myVar */
}
else
{
/* Use the supplied value for myVar */
}
}

因此,如果提供了该值,请使用它。如果没有,请生成它。看起来很简单。

问题是 AS3 不喜欢这样。 'undefined' 被强制为 '0',因此 myVar 永远不会是未定义的。我尝试过 NaN、null 等的变体,但没有任何效果。我能想到的唯一麻烦就是提供一些“魔数(Magic Number)”作为默认使用,但这很丑陋。有人知道更好的解决方案吗?

谢谢!

最佳答案

UPD (来自我的评论):选择一些魔数(Magic Number)来表示值缺失当然​​不是一个好习惯,除非您可以完全确定这个魔数(Magic Number)不会作为某些算术的结果出现(这通常是正确的)。所以这里最好的方法是使用比 int 更宽的类型。 (例如 Number ),或传递一些标志( Boolean 值)来运行,以及 int , 表示实际值缺失。选择应该取决于您是否要强调传递的值是整数这一事实的重要性。

如果您对扩展参数类型感到满意,那么您应该使用 NaN并这样做:

function setMyValue (myVar : Number = NaN) : void
{
if ( isNaN(myVar) )
{
/* Generate a value for myVar */
}
else
{
/* Use the supplied value for myVar */
}
}

这在技术上更准确,也更稳定。它还允许您在编译时进行强类型输入,并且不会像使用 Object 那样导致奇怪的错误。 .

请注意,这不适用于 int正如答案之一所暗示的那样。 int只有数值, NaN将被强制为 0。您需要使用 Number类型。

如果您担心性能 - 不要担心。使用 Number而不是 intuint一般是可以的。

更新:如果您想明确标记该参数应该是整数,只需使用附加标志和确切类型 - 会更清楚。
function setMyValue (isIntValueSupplied : Boolean = false, intValue : int = 0) : void
{
if ( isIntValueSupplied )
{
/* Generate or use a default value of intValue */
}
else
{
/* Use the supplied value for intValue */
}
}

另一种选择是使用附加值定义您自己的类型,例如 MaybeInt ,它保存整数值和一个标志(无论它是否实际初始化)。这样你就可以清楚地表明值应该是整数或无值。但是,这种方法可能有点笨重。

关于actionscript-3 - AS3 : declaring an "undefined" parameter for int, uint 或数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/840469/

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