kotlin-函数

kotlin中的函数

今天看了kotlin高阶函数和lambda表达式,以及匿名函数。最初的高阶函数看的云里雾里。看了扔物线大佬的视频,有了一些理解,特此记录一下。

首先,kotlin中的函数使用fun定义,定义函数的时候声明函数的参数,以及返回值。

//doSomeThing是函数名
//括号中的是函数的参数,包含参数名和参数变量
//:Int表示返回值是Int类型
fun doSomeThing(x:Int,y:Int):Int{
    return x*y
}

以上是一个简单的包含参数以及返回值的函数声明,函数的使用也是比较简单,直接使用someThing(2,3)就可以使用当前函数。如果一个函数不需要返回值,在函数声明的时候可以指定返回值类型为Unit,或者直接省略。

关于函数的参数

1、默认参数  声明函数时可以指定某参数的默认值,调用的时候如果没有当前参数,就使用默认值。这个函数被覆盖时,不能包含默认值。

2、具名参数  调用函数时,指定参数名称

3、不定参数  声明有可变参数的函数时,需要使用vararg关键字,表示这是一个可变参数。可变参数的实质是一个数组。

这里加上一个闭包的概念:外部作用域中声明的变量。

 

下面开始记录高阶函数。

先说以下函数的类型。kotlin中的函数具有类型。例如(Int)->Int.括号中的Int表示参数类型,最后一个Int表示返回值。返回值为空Unit也不能省略。

文档上有一个函数类型可以有一个额外的接受者类型。这里的概念不好理解,直接来一个例子。

var sub:Int.(Int)->Int={
    println("this $this it $it")
    this-it
}
println(4.sub(2))
this 4 it 2  //这里是打印的数据  
2  //这里是最后的结果

通过这段代码可以更好的理解以下。

另外挂起函数需要有一个suspend关键字。

高阶函数也是一个函数,没有特殊的功能,与普通函数的区别就是参数或者返回值类型。高阶函数的参数或者返回值是函数类型的。

也就是高阶函数在使用的过程中,需要传递一个函数的对象。可以是匿名函数或者lambda表达式挥着是函数对象的引用。

使用::可以得到一个函数对象的引用,这个引用可以直接调用,其功能和函数一致。invoke

lambda表达式

val sum:(Int,Int)->Int={x:Int,y:Int->x+y}  这是完整的语法形式。函数类型是可选的,{}中包含完整语法形式的参数声明,函数体在->之后,最后一个表达式的值,会被推断为返回值。

如果高阶函数的最后一个参数类型是函数类型,lambda可以写在()之外。

如果高阶函数只有一个函数类型的参数,()可以省略

如果lambda只有一个参数,这个参数也可以省略,会有一个默认的it,它就是默认的参数名

匿名函数

匿名函数是一个没有函数名的常规函数。

再次强调,闭包是外部作用域定义的变量。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值