我想编写一个接受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转换为String然后检查它是否包含小数点,但我希望有一种更简单的方法。
答案 0 :(得分:1)
我看到的主要问题是以下句子:
问题是,如果参数的小数点为1.00,我希望将其归类为数字。
假设我们有一个名为int
的{{1}}变量,我们将其设置为x
。它看起来像1
,1
还是1.00
?答案永远不是。即使有人要输入这个:
1x10^-1
这个数字实际上看起来并不像什么。这只是第一名。它唯一的表示基本上是它在实际的机器位表示中(浮点式或myFunction(1.00);
)。
全部是一个数字 - 无论是存储在000...001
变量还是Number
变量中。尝试将其转换为int
无济于事,因为信息不是以此开头的。您最接近这一点的几乎就是使用String
作为参数类型,看看是否有人呼叫String
或myFunction("1")
。
由于实际存储在myFunction("1.00")
中的各种各样的东西,只有你真的必须这样做。否则,您的String
关键字应该是最佳选择。但无论您选择哪一个,都不要使用is
或无类型参数;使用Object
或(更优选)a String
。