Kotlin的函数式编程到底是什么??

2021-09-28  本文已影响0人  super大磊

所谓技术总是不停更新迭代,我们能做的只有马不停蹄的去不断学习。

上节讲了gradle相比于maven的优点,相信小伙伴们也准备去学了吧。在本节在来一个重磅,Kotlin的函数式编程。什么是kotlin???

Kotlin(科特林)是一个用于现代多平台应用的静态编程语言,由JetBrains公司开发。Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。除此之外Kotlin还可以编译成二进制代码直接运行在机器上(例如嵌入式设备或iOS),在Java中,是以OOP面向对象编程,Kotlin主要是面向函数式编程,函数可以赋值给变量,也可以作为方法参数,也可以作为函数的返回值,下面一一举例

1.函数赋值给变量

Kotlin既然可以将函数赋值给变量,那么函数作为函数返回值,作为参数那就理所应当。多个变量可以同时引用一个函数,可以不使用函数名调用函数了,函数名就可以忽略,完全靠变量来调用函数,那么就可以定义没有函数名的函数,也就是匿名函数,当然也就是Lambda表达式,下面例子中,::可以取出函数的地址,这个例子和函数指针非常类似

//申明一个函数
fun add(num1: Int, num2: Int)= num1 + num2
//调用
var mAdd = ::add
mAdd(1,2)

2.函数作为函数的参数

  //申明函数
fun add2(num1: Int, f: (isTrue: Int) -> Boolean) {
if (f(num1)) {
    println("1111111")
} else {
    println("2222222")
}
}

fun isEvent(num: Int) = num % 2 == 0

//调用
 add2(22,::isEvent)

3.函数作为返回值

函数作为返回值是函数式编程中非常重要的,函数可以作为返回值,那么函数内可以定义函数,并且函数可以返回函数内定义的函数。如果一个函数只能返回外部函数,函数内不可以定义函数,那就显得低级了,很多功能也就不能实现了,比如闭包。函数内定义函数,定义内函数作用和功能都很明显,函数可以封装得更好,可以返回内部函数,可以访问函数内的局部变量,因为内函数可以访问外函数的变量,而内函数又可以被作为返回值,这部分就是重要的闭包功能,和变量的作用域相关,下面来举几个例子

a.返回外部函数
fun getVoid(num: Int):(x:Int) -> Boolean{
    return  if (num==0) ::isEvent else ::isEvent2
    }

fun isEvent(num: Int) = num % 2 == 0

fun isEvent2(num: Int) = num % 3 == 0

//调用
val isEvent = getVoid(0)
val isEvent2 = getVoid(1)
isEvent(1)
isEvent2(2)
b.返回内部函数
fun getVoid(): () -> Unit {
return {
    println("我是匿名函数函数体")
}
}

上边例子是使用了匿名函数,所以没有了方法名和参数,当然也可以这么写

fun getVoid(): () -> Unit {
val voids = fun() {
    println("我是函数体")
}
return voids
}

也可以不使用匿名函数

fun getVoid(): () -> Unit {
   fun inVoid(){
    println("我是函数体")
    }
  return ::inVoid
  }

总结:kotlin的高阶语法糖很吸引人,代码很简洁,相对于java来说,能节省不少代码量,下一篇我们来讲一下Kotlin的扩展函数,以及java常用的接口回调。

上一篇下一篇

猜你喜欢

热点阅读