Actionscript 3 有人能逐行解释这个AS3代码吗?

Actionscript 3 有人能逐行解释这个AS3代码吗?,actionscript-3,flash,adobe,Actionscript 3,Flash,Adobe,我遇到过在数字中插入逗号的代码,我计划在代码中使用它。这是可行的,但我想了解发生了什么。我正在写一个财富计算器,我需要在结果中的数字上加逗号 function addComma(num: uint): String { var str: String = ""; while (num > 0) { var tmp: uint = num % 1000; str = (num > 999 ? ","

我遇到过在数字中插入逗号的代码,我计划在代码中使用它。这是可行的,但我想了解发生了什么。我正在写一个财富计算器,我需要在结果中的数字上加逗号

    function addComma(num: uint): String {
        var str: String = "";
        while (num > 0) {
            var tmp: uint = num % 1000;
            str = (num > 999 ? "," + (tmp < 100 ? (tmp < 10 ? "00" : "0") : "") : "") + tmp + str;
            num = num / 1000;
        }
        return str;
    }

它工作得很漂亮,但我想理解它,这样如果我愿意,我就可以写类似的东西。

让我们一行一行地浏览一下

function addComma(num: uint): String {
这是不言自明的。它声明了一个名为addComma的函数,该函数接受一个参数num,num是一个无符号整数。函数返回一个字符串

这只是定义了一个名为str的变量,它是一个字符串,并将其设置为空字符串

    while (num > 0) {
当变量num大于0时,此函数将循环。循环本身在每次迭代中将num除以1000,因此当函数完成时,它最终将达到0

        var tmp: uint = num % 1000;
这将创建一个名为tmp的临时变量,它是num modulo 1000。也就是说,它是num/1000的剩余部分。这允许我们获得当前的数字段,我们将处理数字中的最后三个数字

        str = (num > 999 ? "," + (tmp < 100 ? (tmp < 10 ? "00" : "0") : "") : "") + tmp + str;
现在我们把num除以1000。因为num是一个整数,所以它只会向下舍入到最接近的整数。因此,所有的分数分量都将被丢弃,我们将能够对下一组数字进行运算

    }
    return str;
最后,我们返回最终结果

}

就这样!我们结束了。我甚至不确定这是否是解决给定问题的最佳解决方案,但它完成了任务。如果我自己写的话,我会先把数字转换成字符串,然后插入逗号。这样,您就不必担心插入前导零。

非常感谢Alexis!真的很感激!
    }
    return str;
}