具有相同名称的多个参数的函数如何工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有相同名称的多个参数的函数如何工作?相关的知识,希望对你有一定的参考价值。

我一直在浏览Flash游戏的代码(link)。但是,我无法理解其中一些函数是如何工作的,特别是因为其中一些函数定义我认为无法通过编译器。

以下是来自TodCommon.as的一些代码,它们似乎与自身冲突(或者至少使用错误的命名约定)。

private static var gFlashingColor:Color = new Color();

final public static function ClampFloat(ClampInt:Number, ClampInt:Number, ClampInt:Number) : Number
{
    if(ClampInt <= ClampInt)
    {
        return ClampInt;
    }
    if(ClampInt >= ClampInt)
    {
        return ClampInt;
    }
    return ClampInt;
}

final public static function ClampInt(gFlashingColor:int, gFlashingColor:int, gFlashingColor:int) : int
{
    if(gFlashingColor <= gFlashingColor)
    {
        return gFlashingColor;
    }
    if(gFlashingColor >= gFlashingColor)
    {
        return gFlashingColor;
    }
    return gFlashingColor;
}


同样在代码中是我见过的for-each循环的最奇怪的语法(此示例还将包名称作为参数名称)

public function CountPlantByType(com.popcap.flash.framework.resources.fonts:int) : int
{
    var _loc_3:CPlant = null;
    var _loc_2:int = 0;
    var _loc_4:int = 0;
    var _loc_5:* = this.mPlants;
    while(<to complete>)
    {
        _loc_3 = __nextvalue;
        if(_loc_3.mSeedType != com.popcap.flash.framework.resources.fonts)
        {
            break;
        }
        _loc_2++;
    }
    return _loc_2;
}

这些只是我认为看起来非常奇怪且难以理解的事情的几个例子。但这些功能都可以工作,并在整个代码中广泛使用。有人可以解释ClampFloat和ClampInt函数是如何工作的,或者为什么使用包名作为参数是合法的?谢谢

答案

解决。原来我用来从SWF中提取这些文件的程序也在这个过程中损坏了它们。使用JPEXS Free Flash Decompiler而不是ActionScriptExtractor修复了代码语法。

以上是关于具有相同名称的多个参数的函数如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

当参数具有相同名称时如何恢复内置函数?

具有相同布局的多个片段

在多个 AWS Lambda 中处理相同的函数名称

当类成员参数具有相同名称时,如何定义构造函数?

如何使用多个输出参数执行存储过程?

如何将具有相同ID和名称的多个输入类型号相乘