AS3:判断参数是int还是Number的函数

AS3: Function that determines if parameter is int or Number

我想编写一个函数,它接受 int 或 Number 作为参数,并根据它的类型做不同的事情。我的第一个问题是在签名中使用什么,对象还是数字?我在想 Number 因为它涵盖了 int 和 Number。

function myFunction(p:Number):void { //Should p be of type Object or Number?
    if (p is int) trace("Parameter is int.");
    else if (p is Number) trace("Parameter is Number.");
} 

问题是如果参数有像 1.00 这样的小数点,我希望它被归类为数字。那仍然会作为 int 出现。有谁知道如何做到这一点?我想我可以将 p 转换为字符串,然后检查它是否包含小数点,但我希望有更简单的方法。

我看到的主要问题是下面这句话:

The problem is I want it to be classified as a Number if the parameter has a decimal point like 1.00.

假设我们有一个名为 xint 变量,我们将其设置为 1。它看起来像 11.00 还是 1x10^-1?答案永远是否定的。即使有人输入:

myFunction(1.00);

这个数字实际上看起来仍然不像任何东西。这只是第一名。它的唯一表示基本上是它在实际机器位表示中的外观(浮点样式或只是 000...001)。

它只是一个数字 - 无论是存储在 Number 变量还是 int 变量中。尝试将其转换为 String 无济于事,因为一开始就没有信息。您最接近的方法是使用 String 作为参数类型并查看是否有人调用 myFunction("1")myFunction("1.00").

只有在确实需要时才做这样的事情,因为实际上可以存储在 String 中的内容范围很广。否则,您的 is 关键字应该是最好的选择。但是无论您选择哪个,都不要使用 Object 或无类型参数;使用 String 或(更优选)Number.