Kotlin中的函数和Lambda表达式

函数

fun 函数名(参数名:数据类型):Unit{
//函数体
}

fun 函数名(参数名:数据类型):表达式

//举例:
fun SayHi(name:String){println("hi, $name")}
fun SayHi(name:String)=println("hi, $name")

Unit相当于Java中的Void,如果有返回值就将Unit换成要返回的数据类型。

匿名函数

匿名函数与常规函数一样,只是省略了函数名称而已:

fun (参数列表)//如果不赋值给一个变量是会报错的
val SayHi=fun (name:String)=println("hi,$name")

函数参数

具名参数
1.给函数的实参附上形参

fun sum(arg1:Int,arg2:Int)=arg1+arg2
//使用sum函数如下,明确的说明了5要给arg2,2给arg1,所以传递的参数对应顺序也可以打乱
sum(arg2=5,arg1=2)

可变参数
1.某个参数可以接受多个值
2.可以不为最后一个参数
3.如果传参的时候有歧义,需要使用具名参数指定

//vararg ints:Int表示一个Int类型的可变参数
fun hello(vararg ints:Int,name:String){
     ints.forEach(::println)
     println(name)
}
//调用方法,Java中的可变参数只能放在最后一个,而kotlin中的可变参数因为有具名参数的存在可以放在任意的位置。
hello(1,2,3,4,5,name="呵呵")

默认参数
如果某个参数经常需要传递一个固定的值,那么就可以在定义函数时给其中的参数把值给定。如下

//直接给第一个参数给定30的值
fun hello(name:Stringdata:Int=30){
     ints.forEach(::println)
     println(name)
}
//使用方法,最后一个参数已经给定的30,这里就不用传了
hello("你好")

ps : 1.函数功能要单一
2.函数名要做到顾名思义
3.参数个数不要太多

Lambda表达式

Lambda表达式其实就时匿名函数
写法:{[参数列表]->[函数体,最后一行是返回值]}

fun sum(a:Int,b:Int)=a+b
//转换成Lambda就是
val sum={a:Int,b:Int -> a+b}
//a:Int,b:Int是Lambda表达式的参数类型,a+b就是返回值,这里Lambda表达式的类型是(Int,Int)->Int
//用法 println(sum(1,2))和println(sum.invoke(1,2))是一样的,invoke是一个运算符重载的方法

Lambda类型举例
1.()->Unit
无参,返回值是Unit
2.(Int)->Int
传入整型,返回值是整型
3.(String,(String)->String)->Boolean
传入字符串,Lambda表达式,返回Boolean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值