Kotlin 高阶函数

package com.av.bcacc.kotlinpai.api.basic.study
import java.lang.StringBuilder
/**
 * @description 顶层方法-实现StringBuilder的高阶函数
 * @author wlhu
 * @time 2022/12/3 16:10
 * @email:2072025612@qq.com
 */

fun StringBuilder.build(block:StringBuilder.()->Unit):StringBuilder{
    block()
    return this
}

package com.av.bcacc.kotlinpai.api.basic.study

class KotlinHigherOrderFunction {
}

fun main() {
    println("hello kotlin...")
    println("-------------------------【Kotlin 高阶函数:】----------------------------")
    println("高阶函数定义:如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称高阶函数")
    var num1 = 100
    var num2 = 80
    var result1 = numbersDeal(num1, num2, ::plus)//::plus和::minus 写法是一种函数引用方式的写法。
    var result2 = numbersDeal(num1, num2, ::minus)
    println("result1:${result1},result2=${result2}")
    println("################################高阶函数lambda写法############################")
    var result3 = numbersDeal(num1, num2) { n1, n2 ->
        n1 + n2
    }
    var result4 = numbersDeal(num1, num2) { n1, n2 ->
        n1 - n2
    }
    println("result3:${result3},result4=${result4}")
    println("################################自定义StringBuilder的高阶函数调用写法############################")
    var list = listOf("apple","bnana","orange")
    var result = StringBuilder().build {
        append("start eating fruits.\n")
        for (fruit in list){
            append(fruit).append("\n")
        }
        append("eat all fruits")
    }
    println("result:${result}")
}
/**
 * @description 高阶函数的理解:高阶函数允许让函数类型的参数来决定函数的执行逻辑。即使是同一个高阶函数,只要传入不同的函数类型参数,那么它执行逻辑和最终的返回结果就可能是完全不同的。
 *              基本规则:(String,Int)-> Unit 说明  -> 左边的(String,Int)是参数,->右边的Unit是返回值
 * @author wlhu
 * @time 2022/12/3 15:21
 * @email:2072025612@qq.com
 */

fun numbersDeal(num1: Int, num2: Int, opration: (Int, Int) -> Int): Int {
    var result = opration(num1, num2)
    return result
}

fun plus(num1: Int, num2: Int): Int {
    return num1 + num2
}

fun minus(num1: Int, num2: Int): Int {
    return num1 - num2
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值