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
}
Kotlin 高阶函数
最新推荐文章于 2025-12-02 17:37:21 发布
1143

被折叠的 条评论
为什么被折叠?



