Kotlin-函数表达式和具名参数

函数声明的几种方式

常规函数声明

fun main(args:Array<String>){
//    需要注意的是必须先声明函数,后调用函数。
//    var add1 = fun(a: Int, b: Int): Int {
//        return a + b
//    }
	println("调用add函数:"+add(3,4))
	println("调用add1函数:"+add1(3,4))
}
fun add(a: Int, b: Int): Int {
    return a + b
}
var add1 = fun(a: Int, b: Int):Int{
    return a + b
}

函数的变形

fun main(args: Array<String>) {
//    需要注意的是必须先声明函数,后调用函数。
//    var add1 =fun(a: Int, b: Int): Int = a + b
    println("调用add函数:"+add(3,4))
    println("调用add1函数:"+add1(3,4))
}
fun add(a: Int, b: Int): Int = a + b
var add1 =fun(a: Int, b: Int): Int = a + b

函数作用域问题

fun main(args: Array<String>) {
//    参数和参数类型都在等号右边
    var add = {a: Int, b: Int -> a + b }
//    参数和参数类型分别的等号左右两侧
    var add1: (Int, Int) -> Int = { a, b -> a + b }
//    优先执行作用域小的或者交作用域近的函数
    println("调用add函数:" + add(3, 4))
    println("调用add1函数:" + add1(3, 4))
}
//函数名相同,但是作用域不同,可以同时存在
fun add(a: Int, b: Int): Int = a + b + 1
var add1 =fun(a: Int, b: Int): Int = a + b + 1

看打印结果就可以区分了
调用add函数:7
调用add1函数:7
注意:如果用fun声明和var声明的函数名字相同,则会优先使用var声明的函数
区别是:var声明方式可以放在某个函数内部,这样函数的作用域就不同了

参数默认值-具名参数

很多语言在定义函数的时候,可以直接给参数设置默认值,Kotlin语言也可以。
但是调用的时候需要注意,如果设置了默认值的参数并不是都在参数尾部,那就需要使用具名参数的传参方式。

fun main(args: Array<String>) {
    //常规调用
    commonFun("张三",25)
    //设置默认值的参数非第一个参数的函数
    defaultFun("李四")
    //具名参数,调用设置默认值参数在中间的函数
    defaultFun("王五",height = 170)
    //具名参数,设置默认值的参数在第一个的函数
    firstDefaltFun(age = 21,height = 175)
    //设置了默认值也可以传递参数,这样默认值就无效了
    firstDefaltFun("大飞",20,180)
}
//常规函数
fun commonFun(name:String,age:Int){
    println("姓名:$name ,年龄:$age")
}
//参数默认值在尾部的函数
fun defaultFun(name:String,age:Int=26){
    println("姓名:$name ,年龄:$age")
}
// 函数重载,参数默认值在中间的函数
fun defaultFun(name:String,age:Int=26,height:Int){
    println("姓名:$name ,年龄:$age , 身高:$height cm")
}
//默认值在首位的函数
fun firstDefaltFun(name:String="赵六",age: Int,height: Int){
    println("姓名:$name ,年龄:$age , 身高:$height cm")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值