时间:2021-05-20
函数默认值
周所周知,Java语言并不支持参数使用默认值。有人说这是因为“默认参数”和“方法重载”同时支持的话有二义性的问题,具体真正的原因我不得而知。但是对我个人来说,Java不支持这个特性的确挺让我蛋疼的,虽然说使用方法重载也可以间接实现与默认参数这个特性相同的功能,但这就意味着你得写更多的代码……
简要介绍
Kotlin函数定义时,支持对参数指定默认值,这样就有效减少Java之前定义重载函数的数量.
简要对比如下:
1、Java函数定义,如果sayHelloTo函数中的lastName可以使用默认值,则需要定义如下两个函数.
public class Person { public void sayHelloTo(String firstName,String lastName){ System.out.println("Hi,"+firstName+" "+lastName); } public void sayHelloTo(String firstName){ sayHelloTo(firstName,"noLastName"); }}2、Kotlin定义如下,只需要一个函数
class Person { fun sayHelloTo(firstName: String, lastName: String = "noLastName") { println("Hi,$firstName $lastName") }}Kotlin函数默认值详细规则
1、可以采用指定全部参数名和不指定参数名的调用方式,推荐采用指定参数名的调用方式(不能指定部分函数参数名,其他的不指定)
正确样例:
错误样例:
sayHelloTo(firstName = "Jerry","Aha")2、在指定参数名时,所有无默认值参数传入值即可
样例:
sayHelloTo(firstName = "Jerry",lastName = "Aha")3、在不指定参数名时,则需要区分情况:
如果函数定义时,所有具有默认值的参数都在最后,则可以只传入无默认值参数值.
样例:
函数定义:
fun sayHelloTo(firstName: String, lastName: String = "Aha")正确样例:
sayHelloTo("Jerry")如果函数定义时,具有默认值的参数并不都是在最后面,则必须传入所有参数值.
样例:
函数定义:
fun sayHelloTo(firstName: String, middleName: String = "",lastName: String)正确样例:
sayHelloTo("Jerry","","Aha")错误样例:
sayHelloTo("Jerry","Aha")Demo代码
1、Person.kt
class Person( val firstName: String = "Jerry", val lastName: String = "Yin") { fun sayHello() { System.out.println("Hi,$firstName $lastName") } fun sayHelloTo(firstName: String = "Baby", lastName: String = "Aha") { System.out.println("Hi,$firstName $lastName") }}2、Person2.kt
class Person2( val firstName: String = "Jerry", val lastName: String) { fun sayHello() { System.out.println("Hi,$firstName $lastName") } fun sayHelloTo(firstName: String = "Baby", lastName: String) { System.out.println("Hi,$firstName $lastName") }}3、调用代码:
Person().sayHello()Person("Jerry1").sayHello()Person("Jerry2", "Yin2").sayHello()Person(firstName = "Jerry3").sayHello()Person(lastName = "Yin4").sayHello()Person().sayHelloTo()Person().sayHelloTo("Baby1")Person().sayHelloTo("Baby2", "Aha2")Person().sayHelloTo(firstName = "Baby3")Person().sayHelloTo(lastName = "Aha4")Person2(lastName = "Yin5").sayHello()Person2("Jerry6", "Yin6").sayHello()Person2("", "").sayHelloTo(lastName = "Yin8")Person2("", "").sayHelloTo("Jerry9", "Yin9")总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例展示了Python使用函数默认值实现函数静态变量的方法,具体方法如下:一、Python函数默认值Python函数默认值的使用可以在函数调用时写代码提供方
本节内容:php函数指定默认值在php编程中,为自定义函数设定默认值,当用户调用该函数时,如果不给参数指定值,参数会用默认值顶替。例1,复制代码代码如下:php
本文实例分析了php定义一个参数带有默认值的函数用法。分享给大家供大家参考。具体分析如下:php的函数参数可以指定默认值,指定默认值后,调用时如果不给该参数赋值
前言JavaScript函数可以有默认参数值。通过默认函数参数,你可以初始化带有默认值的正式参数。如果不初始化具有某些值的参数,则该参数的默认值为undefin
C++构造函数的默认参数和普通函数一样,构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参取默认值。【例】#