【问题标题】:Polymorphing a function that differenciates float numbers from integers (javascript)多态一个将浮点数与整数区分开来的函数(javascript)
【发布时间】:2012-10-24 09:02:18
【问题描述】:

我需要在 javascript 中构建一个可以处理不同类型变量的多态函数。整数和浮点数。

这可能吗?最好的方法是什么?

【问题讨论】:

    标签: javascript integer polymorphism


    【解决方案1】:

    Javascript 中没有整数数据类型,因此您必须检查值是什么,即是否有小数部分:

    if (value % 1 != 0) {
      // use it as integer
    } else {
      // use it as floating point
    }
    

    【讨论】:

    • 这对于小数点后没有任何值但仍需要被视为小数的数字将失败,例如:5.0
    • @techfoobar 5.0===55.0 计算结果为 5。除非是strings,否则无法区分它们
    • @JanDvorak - 是的。但取决于OP如何想要它。即使 JS 将 5.0 存储为 5(类型号),如果 OP 希望 5.0 被视为他正在谈论的 polymorphic 函数中的浮点数..
    • @JanDvorak - 是的,这里唯一可能的方法是使用字符串。
    • 是的,只传递字符串并在函数内部确定它是否有.等。
    【解决方案2】:

    唯一的最佳解决方案是不依赖方法重载(实际上,这是您在此处寻找的,并且在 JS 中不可用),而是使用不同的函数名称并具有两个函数。

    这意味着您必须在调用端决定调用哪个函数,但这与其他语言(如 Java、C#、C)类似,在编译时做出决定。

    【讨论】:

      【解决方案3】:

      是的。 Javascript 没有函数参数类型化。 整数和浮点数是一类类型的对象 - Number

      【讨论】:

        猜你喜欢
        • 2017-07-21
        • 1970-01-01
        • 2015-11-19
        • 1970-01-01
        • 1970-01-01
        • 2014-12-02
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多