【问题标题】:What is the correct term for a function that accepts its argument in different data types?接受不同数据类型参数的函数的正确术语是什么?
【发布时间】:2016-04-16 07:52:41
【问题描述】:

最近,我一直在努力向我的一位同事解释某种方法的工作方式。这个问题与我不知道某个术语(可能存在)有关。取一个这样的函数:

function myFunct (arg) {
    if (typeof arg == "number") {
        // ...
    }

    if (typeof arg == "string") {
        // ...
    }
}

根据arg 的数据类型,该方法会有所不同。这种接受不同数据类型参数的函数的正确术语是什么?

【问题讨论】:

  • 这里我想说“动态调度函数”,但我知道这不是它的正式名称。我不确定它有一个。

标签: oop language-agnostic


【解决方案1】:

这叫做“多态性”,这里是来自wikipedia的定义:

... 多态函数可以应用于不同类型的参数,但根据应用它们的参数的类型而表现不同(也称为函数重载或运算符重载)

在 C++ 等静态类型语言中,可以定义多个具有相同名称但参数不同的函数。例如myFunct(int arg)myFunct(string arg)

在动态类型语言(如 php 或 python)中,函数可以接受任何类型的参数,并根据示例中的类型做不同的事情。

【讨论】:

  • 不确定,我宁愿称它为 fake polymorphism,因为显示的示例并不是真正的重载函数。它只是检查参数的类型,然后做不同的事情。在真正的多态中——据我所知,不同的函数(同名但不同的实现)会根据类型被调用。
  • 在做一些研究时,我经常发现术语“功能多态性”,通常与语言相关,它不支持真正的多态性。
  • @Sven,你能提供一个解释功能多态性的链接吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 2011-04-16
  • 1970-01-01
相关资源
最近更新 更多