Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 函数

Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 基础介绍
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 流程控制
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 特殊的类
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 函数
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 集合
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 作用域
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 代理
Kotlin 语法基础大全,从例子着手的 从0到1的学习 --c
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- kotlin与js
翻译来源

高阶函数

高阶函数 是以另一个函数为参数或者返回值的函数。

以另一个函数为参数
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int {  // 1
    return operation(x, y)                                          // 2
}

fun sum(x: Int, y: Int) = x + y                                     // 3

fun main() {
    val sumResult = calculate(4, 5, ::sum)                          // 4
    val mulResult = calculate(4, 5) { a, b -> a * b }               // 5
    println("sumResult $sumResult, mulResult $mulResult")
}
  • 1 定义一个高阶函数,他有两个int参数 x,y,同时他还有一个函数作为参数:operation。在operation的申明中,他的参数和返回值已经申明。
  • 2 这个高阶函数的内部实现是获得operation的返回值在传入x,y的情况下。
  • 3 定义一个函数,与operation的定义很像。
  • 4 执行这个高阶函数,传入两个int值的参数,和传入一个函数参数::sum:: 在kotlin中是一个使用名字来提取方法的符号。
  • 5 执行这个高阶函数,插入两个int值的参数,和传入一个lambda为参数。这种写法是不是看起来很简洁?
以一个函数作为返回值
fun operation(): (Int) -> Int {                                     // 1
    return ::square
}

fun square(x: Int) = x * x                                          // 2

fun main() {
    val func = operation()                                          // 3
    println(func(2))                                                // 4
}
  • 1 定义一个高阶函数,他返回一个函数作为返回值。在这里(Int) -> Int的写法是申明的返回值的函数的结构。这里定义了返回square函数
  • 2 定义名字叫square的函数,他的作用是返回x*x
  • 3 执行这个高阶函数,获取一个函数作为返回值。在这里,operation()返回的func 就是square方法
  • 4 执行func。这里square方法会被执行、

lambda 表达式

Lambda表达式是一种为了方便创建函数对等式(就是 相当于一种函数)。

上一篇:Java设计模式(一)——工厂方法模式


下一篇:ping: socket: Operation not permitted