迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Kotlin 中的 let 关键字

作者:迹忆客 最近更新:2023/03/21 浏览次数:

本篇文章教授范围函数 let 以及如何在 Kotlin 中使用它。

Kotlin 中的 let 函数

作用域函数提供了一种在代码块内的临时作用域内声明变量、执行所需操作和返回一些值的方法,从而产生干净紧凑的代码。let 是 5 个作用域函数之一,即 runalsoapplywithlet

let 函数将对象(在其上调用它)作为参数,对其执行操作,并返回 lambda 表达式的结果。

变量可以在 let 表达式中声明,但这些变量不能在 let 表达式之外使用,因为 Kotlin let 是一个作用域函数。

结果可以是任何数据类型。结果不必与对象的类型相同。

语法:

var var_name = object.let{
    // lambda expression
    // declare variables
    // perform tasks
    // return some value
}

我们将使用 var 类型的 var name 变量,然后使用预定义类型或自定义类。我们可以使用 let 函数对这些变量执行操作,并使用引用对象上下文的 it 关键字访问对象的值。

重命名 it 关键字会将其转换为 lambda 函数。我们可以操作变量并返回保存在 var name 中的任何数据类型的结果。

let 函数可能返回也可能不返回任何值。如果未提及返回值,则仅返回 Kotlin.Unit

fun main(){
    var str = "Hello"
    // let function returning string
    var temp1 = str.let {
        var gm = "Good Morning"
        "$it! $gm".toUpperCase()
    }
    // let function performing println function inside it
    var temp2 = str.let{ greetings ->
        for(i in 1..3){
            println(greetings+" $i")
        }
    }
    println(str)
    println(temp1)
    println(temp2)
}

输出:

Hello 1
Hello 2
Hello 3
Hello
HELLO! GOOD MORNING
kotlin.Unit

上面的代码表明,在 temp1 变量中,我们通过 str 使用 let 函数。变量 gm 只能在 let 块中访问。

itstr 的副本,我们也可以使用 lambda 表达式使用另一个名称。let 函数返回 $str!大写的 $gm 分配给 temp1 变量。

temp2 中,greetings 是一个与 str 具有相同值的变量。

Lambda 表达式有一个输出 greetings 值和 ifor 循环。它不返回任何值。

因此,当我们打印 temp2 时,Kotlin.Unit 是表示变量已使用单位值初始化的输出。此外,在对 str 字符串执行两次 let 操作后,它的值不会改变。

在 Kotlin 中使用 let 函数进行空检查

let 函数只有在给定变量不为 null 时才能执行操作。例如,如果我们想在 Student 类中打印姓名不为 null 的学生姓名。

class Student(var name : String? = null, roll : Int, grade : Char? = 'C')
fun main(args : Array<String>){
    var s1 = Student("Jim", 9304, 'A')
    var s2 = Student(null,7493,'B')
    var s3 = Student("Pam", 2849)
    var names = listOf<String?>(s1.name,s2.name,s3.name)
    for(name in names){
        name?.let{println(it)}
    }
}

输出:

Jim
Pam

在上面的示例中,我们创建了一个具有三个参数的 Student 类,namerollgrade。学生的名字最初是 null

? 表示此参数可以为 null。然后,我们在 main 函数中创建 Student 类的三个对象。

s1 具有所有三个参数,而不是 nulls2 有两个参数,roll 和 grade,但是名字是 nulls3 有两个参数 name 和 roll,但是没有提到 grade。

变量 names 是学生姓名的列表,我们使用 for 循环访问每个姓名。name?.let{println(it)} 首先检查名称是否为 null,如果为 null,则不执行 let

如果不为 null,则将学生的姓名发送给 let,而 let 将打印姓名。it 是引用名称本身的名称对象的副本。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便