Kotlin高阶函数的使用

Lambda表达式
  • Lambda表达式
{x: Int, y: Int -> x + y}

->左边是参数和参数类型,右边返回值
函数类型定义
  • (String,Int)->Unit为一个函数类型,即参数、-> 、返回值组成

高阶函数定义-Heigher-Order-Functions

  • 高阶函数定义:参数类型是函数类型,或者返回值是函数类型的函数称为高阶函数,除此之外函数类型还能赋值给变量
    fun gaojie(name1: Int, name2: Int, operation: (Int, Int) -> Int): Int {
        return operation(name1, name2)
    }

高阶函数的调用

  • 本质:kotlin「函数其实并不能传递,传递的是对象」,因为只有对象才可以作为参数、返回值、赋值变量。又因为匿名函数、lambda表达式其实就是一个函数类型的对象,所以可以如下调用。
   fun gaojie(name1: Int, name2: Int, operation: (Int, Int) -> Int): Int {
        return operation(name1, name2)
    }

    fun add(name1: Int, name2: Int): Int {
        return name1 + name2
    }

    fun minus(name1: Int, name2: Int): Int {
        return name1 - name2
    }
    
  • 调用方法1:双冒号加函数名(Function Reference)
 val name = gaojie(name1, name2, ::add)

  • 调用方法2:匿名函数
 gaojie(name1, name2, fun(name1: Int, name2: Int): Int {
            return name1 + name2
        })

  • 调用方法3,: Lambda表达式
 gaojie(name1,name2){ a,b ->
            a+b
        }

kotlin中Lambda的应用

fun setOClickListener(onClick: (View) -> Unit){
 this.onClick = onClick;
}

view. setOClickListener(fun (v: View): Unit{
//dosomeing
});

匿名函数写成Lambda表达式


view.  setOClickListener({ v: View ->{
//dosomeing
}
})

如果Lambda是函数最后的一个参数的话,可以把Lambda写在括号的外面

view. setOClickListener(){ v: View ->{
//dosomeing
}
}

如果Lambda是函数的唯一的参数,又可以把括号去了

view. setOClickListener{ v: View ->{
//dosomeing
}
}

如果Lambda的参数是单参数,参数类型和参数名也可以省略

view. setOClickListener{ 
//dosomeing
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值