- add = lambda x, y:x+y
第二个例子是给Int类定义了一个拓展函数,并且该拓展函数以中缀表达式表示,赐与了开辟者定义类似关键字的权力。
- [](int x, int y) -> int{ return x + y; }
Kotlin中的lambda:
- var add = {x: Int, y: Int -> x + y}
Kotlin 作为一个强类型说话照样比较简洁的。
- fun main(args: Array) {
- val sumLambda = {a: Int, b: Int -> a + b}
- sumLambda(1, 2)
- }
它可以像函数一样应用()调用,在kotlin中操作符是可以重载的,()操作符对应的就是类的重载函数invoke()。
你还可以想下面如许定义一个变量:
- val numFun: (a: Int, b: Int) -> Int
- fun main(args: Array) {
- isBiggerThan(2)
- isBiggerThan(2, 5)
- var s = "a".isLetter()
- var a = 1 add 2
- }
- fun isBiggerThan(a: Int, b: Int = 0) {
- return a > b
- }
- //拓展函数
- fun String.isLetter(): Boolean {
- return matches(Regex("^[a-z|A-Z]$"))
- }
- //拓展函数,中缀表达式
- infix fun Int.add(x: Int): Int {
- return this + x
- }
- fun main(args: Array) {
- val sumLambda = {a: Int, b: Int -> a + b}
- var numFun: (a: Int, b: Int) -> Int
- numFun = {a: Int, b: Int -> a + b}
- numFun = sumLambda
- numFun = ::sum
- numFun(1,2)
- }
推荐阅读
如不雅办事调用的缺点率高于预先设置的缺点率。 Circuit-breaker 的状况会大年夜 CLOSED 变成 OPEN(熔断状况)。 当 Circuit-breaker 状况为 OPEN 时,所有进来的请求会被阻拦。 过一段时光,会让一些单>>>详细阅读
本文标题:Kotlin函数与函数式编程浅析
地址:http://www.17bianji.com/lsqh/35653.html
1/2 1