您的位置:首页 > Web前端 > JavaScript

paip.编程语言方法重载实现的原理及python,php,js中实现方法重载

2014-03-31 23:32 876 查看
paip.编程语言方法重载实现的原理及python,php,js中实现方法重载

有些语言,在方法的重载上,形式上不支持函数重载,但可以通过模拟实现。。

主要原理:根据参数个数进行重载,或者使用默认值 ,或者根据参数类型重载

对于静态语言java ,c++来说, 形式上就可以实现函数重载

对于动态语言,python,php,js 形式上不支持函数重载,可根据参数个数进行模拟。。 也可模拟根据参数类型重载模拟

作者Attilax 艾龙, EMAIL:1466519819@qq.com

来源:老哇的爪子 Attilax

地址:http://blog.csdn.net/attilax

==========php中的方法重载

***

在php中实现重载,主要通过魔术方法 __call 实现。也可通过参数个数进行重载

__call 会自动获得两个参数,第一个参数代表要求调用的函数名,第二个参数代表由实参组成的数组。

***/

__call 实际上还是使用根据参数个数进行重载的...

重载的例子我写了个,你参考一下

function overloadTest(){

$name = "overload".func_num_args();

$name();

}

function overload0(){

echo 'overload0';

}

function overload1(){

echo 'overload1';

}

function overload2(){

echo 'overload2';

}

overloadTest(); //overload0

overloadTest(1); //overload1

overloadTest(1,1); //overload2

====================js中 当一个作用域中同时定义两个相同的方法名时不会报错。但真正使用的是后一个函数

要实现重载,原来的方法改名,不个调用的方法放得个最后.

function createTab_1(tabname)

function createTab(tabname,taburl) {

if(arguments.length==1){

createTab_1(tabname);

}

================python中的重载

用python实现:

f(str,times=1)

print str*times

打印一次就调用f(str),打印多次就调用f(str,times),调用方法一样。

从形式上先,与C++相比,代码省了很多,但功能是一样的。times=1表示参数没有指定时,默认情况下的值为1

默认值就是python用来实现函数重载的重要方法。

参考

php中实现方法重载: - Owl Base的日志 - 网易博客.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: