美文网首页
Kotlin语法学习之Lambda

Kotlin语法学习之Lambda

作者: TokyoZ | 来源:发表于2019-05-05 15:25 被阅读0次

1.Lambda介绍

Lambda表达式可以减少代码的复杂度,使代码看上去更加清爽,另外,Kotlin中有许多高阶函数,这些函数基本都是由Lambda表达式实现的,因此,学习Lambda表达式是十分有必要的。

Kotlin中的Lambda表达式本质上底层是匿名函数实现的。

2.Lambda语法

2.1 表达式特点

  • Lambda总是被{}包裹;
  • 若有参数,则在->左侧;
  • 若有函数体,则在->右侧。

2.2 语法

2.2.1 无参数

语法:

// 语法
val/var 函数名 = {
    //逻辑操作
}

示例:

// 普通
fun t1() {
    println("我是普通表达式")
}

// 无参Lambda
var tt1() = {
    println("我是无参Lambda表达式")
}

2.2.2 有参

语法:

// 语法1
val/var 函数名: (参数类型, 参数类型 ...) -> 返回值类型 = {
    //逻辑操作
}

// 语法2
val/var 函数名 = {
    变量名: 变量类型, 变量名:变量类型, ... -> 逻辑操作
}

示例:

// 普通
fun t2(a: Int, b: Int): Int {
    return a + b
}

// Lambda表达式1
var tt2: (Int, Int) -> Int = {
    a, b -> a + b
}

// Lambda表达式2
var ttt2 = {
    a:Int, b: Int -> a + b
}

2.2.3 做为函数中的参数

语法:

// 语法
fun 函数名(变量名: 变量类型, ... , 函数名: (变量名: 变量类型 ...) -> 返回值): 返回值 {
    //逻辑
}

示例:

// 普通
fun sum(a: Int, b: Int): Int {
    return a + b;
}
fun t3(a: Int, b: Int): Int {
    return a + b
}
t3(4, sum(5,6))

// Lambda表达式作为函数中的参数
fun tt3(a: Int, sum: (num: Int, num2: Int) -> Int): Int {
    return a + sum.invoke(5,6);
}
tt3(4, {num: Int, num2: Int -> num + num2})

说明:

做为函数中的参数比较难理解,可以把它认为是将普通函数中的某一个参数变成一个函数,这个函数即是Lambda形式的函数,很多高阶函数即是通过此方法来实现的。

3.Lambda表达式使用

3.1 it

当lambda表达式函数中的参数只有1个的时候,可以用it来代替。

fun tt4(a: Int, foo: (num: Int) -> Boolean ): Int {
    if(foo(a)) {
        return a
    } else {
        return 0
    }
}

tt4(10, { it > 5}) // 输出10
tt4(3, { it > 5}) //输出0

等价于:

tt4(10, { num:Int -> num > 5 })

3.2 模拟为AndroidView编写一个OnClickListener

模拟一个View

class View {
    
    // listener实际上是一个 函数
    var mListener: ((s: String) -> Unit)? = null
    
    fun setOnClickListener( listener: ((s: String) -> Unit)?) {
        this.mListener = listener
    }
    
    fun click(s: String) {
        mListener?.invoke(s)
    }
}

设置点击监听,并点击:

var v = View();

v.setOnClickListener { println("I want Say: $it") }

v.click("Hello Kotlin")  // 输出:I want Say: Hello Kotlin

3.3 未完待续 。。。

相关文章

  • Kotlin学习笔记——lambda

    参考文献——kotlin之Lambda编程来自简书作者——程自舟 Kotlin lambda语法 完整写法 省略参...

  • kotlin 基础学习

    kotlin 学习 kotlin优点语法简洁,支持lambda表达式,强大的when语法,不用写分号结尾 kotl...

  • Kotlin语法学习之Lambda

    1.Lambda介绍 Lambda表达式可以减少代码的复杂度,使代码看上去更加清爽,另外,Kotlin中有许多高阶...

  • Kotlin学习之基础语法

    写在前面的:1,Kotlin学习之基础语法2,Kotlin学习之类和继承3,Kotlin学习之属性和字段4,Kot...

  • Kotlin学习 之Lambda

    Ref: > https://www.kotlincn.net/docs/tutorials/getting-st...

  • kotlin入门潜修系列教程

    kotlin入门潜修之开门篇—kotlin是什么? kotlin入门潜修之基础篇—基础语法kotlin入门潜修之基...

  • Lambda 之 JAVA & Kotlin 中二问题

    先附上整理学习的kotlin Lambda表达式范例 以上是Kotlin中的Lambda表达式使用方式,对比Jav...

  • 第六篇:Kotlin之面向对象简单

    上篇:Kotlin之函数Lambda表达式 下篇:Kotlin之面向对象升级(一) Kotlin也支持面向对象的三...

  • Kotlin学习笔记:类和接口

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • Kotlin学习笔记:概述

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

网友评论

      本文标题:Kotlin语法学习之Lambda

      本文链接:https://www.haomeiwen.com/subject/ghhhoqtx.html