package com.av.bcacc.kotlinpai.api.basic.study
import java.lang.StringBuilder
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)
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}")
}
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
}