如何编写常见语言带默认参数值的函数

  我们在定义函数时,有时候需要让参数带默认值,在各种语言中,带默认值的参数写法也不尽相同。

C#函数默认值

   public void DemoMethod(String name, String job="programmer", String address="Hangzhou") { }

1、赋值方式一,赋值在不指定参数的前提下,按顺序逐个给参数进行赋值:

   DemoMethod("hans");

   DemoMethod("hans", "student"); 

   DemoMethod("hans", "student", "Ningbo");

2、赋值方式二,通过“参数名:参数值”来直接给某个参数赋值,直接跳过某些带默认值的参数:

   DemoMethod("hans", address: "Ningbo");

注意事项:

   ① 缺省参数的声明只能放在普通参数之后;

   ② 指定的缺省值必须是一个常量,如方法 void TestMeothod(DateTime date = DateTime.Now){} 是不能通过编译的;

Java函数默认值

   Java目前还不支持函数参数带默认值,只能通过重载来实现此功能,实现方法如下所示:

public void DemoMethod(String name){
    DemoMethod(name,"programmer","Hangzhou");
} 
public void DemoMethod(String name,String job){
    DemoMethod(name,job,"Hangzhou");
}
public void DemoMethod(String name,String job,String address){}
PHP函数默认值

   function TestMethod($name, $job="programmer", $address="HangZhou") { }

   PHP支持函数默认值,但是不支持跳跃式给参数赋值,如在方法TestMethod中,如果想给$name和$address赋值,$job使用默认值,与C#不同的是,这在PHP是不能直接实现的,但可以通过改动函数人为实现,如下所示:

function TestMethod($name,$job="programmer",$address="HangZhou"){
        if($job===null) $job="programmer";
        print "name=$name,job=$job,address=$address";
}

   然后传入参数:TestMethod("hans",null,"Australia") 即可。

原文地址:https://www.cnblogs.com/hanganglin/p/4311894.html