kotlin的扩展函数“let、run、also、apply”的作用和区别

这篇具有很好参考价值的文章主要介绍了kotlin的扩展函数“let、run、also、apply”的作用和区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录一下四个扩展函数的区别,使用经常记不住:

Kotlin的扩展函数letrunalsoapply都是用于简化代码的工具,它们可以在不修改原始类或对象的情况下添加新的功能和行为。下面是它们的作用和区别:

  1. let:用于对一个可空对象进行操作,避免出现空指针异常。它会将对象作为lambda表达式的参数传递,并返回lambda表达式的结果。在lambda表达式中,可以进行空判断和空安全操作,以确保对象不为空。

  2. run:用于执行一个lambda表达式并返回结果。与let不同的是,它不会将对象作为参数传递给lambda表达式,而是使用this关键字引用当前对象。它的返回值是lambda表达式的结果。

  3. also:用于执行一个lambda表达式并返回对象本身。它与run类似,但是它将对象作为参数传递给lambda表达式,而不是使用this关键字引用当前对象。它的返回值是对象本身。

  4. apply:用于对一个对象进行初始化和配置操作,并返回对象本身。它与also类似,但是它使用this关键字引用当前对象,而不是将对象作为参数传递给lambda表达式。它的返回值是对象本身。

总体而言,letrun用于处理对象的结果,alsoapply用于处理对象本身。选择使用哪一个取决于你要达成的目标。

使用let扩展函数函数的简单程序例子

当你需要对一个可空对象进行操作,并避免出现空指针异常时,let函数就非常有用。以下是一个简单的Kotlin程序例子,使用了let函数来检查可空对象是否为空,如果不为空则执行操作。

fun main() {
    val str: String? = "Hello World"
    str?.let {
        println(it.length)
    }
}

在这个例子中,我们定义了一个可空字符串str,并使用?.安全调用运算符来调用let函数。如果str不为null,let函数将会执行传入的lambda表达式,lambda表达式中的it关键字代表str对象本身,我们在其中执行了一个打印操作,输出了字符串的长度。如果str为空,let函数不会执行lambda表达式,避免了空指针异常的出现

使用run扩展函数的简单程序例子

run函数通常用于在对象上执行一系列操作,并返回结果。以下是一个简单的Kotlin程序例子,使用了run函数来创建一个新的字符串并执行操作:

fun main() {
    val str = "Hello"
    val result = str.run {
        this + " World"
    }
    println(result)
}

我们定义了一个字符串str,并使用run函数来执行一些操作。在run函数中,我们使用了this关键字引用了str对象本身,然后将其与另一个字符串拼接起来,并将拼接结果赋值给result变量。最后,我们使用println()函数输出result的值,即"Hello World"

需要注意的是,run函数的返回值是最后一个表达式的结果,也就是this + " World"的结果,因此result的值也是该结果。

使用apply扩展函数的简单程序例子

apply函数通常用于在对象上进行初始化和配置操作,并返回对象本身。以下是一个简单的Kotlin程序例子,使用了apply函数来创建一个新的TextView对象并设置其属性:

import android.widget.TextView

fun main() {
    val textView = TextView(null).apply {
        text = "Hello World"
        textSize = 16.0f
        setTextColor(0xFF0000FF.toInt())
    }
    println(textView)
}

在这个例子中,我们使用apply函数创建了一个新的TextView对象,并设置了其texttextSizetextColor属性。apply函数的lambda表达式中使用了this关键字引用了TextView对象本身,然后对其属性进行了配置。最后,我们将配置后的TextView对象赋值给textView变量,并使用println()函数输出其值,即TextView对象的字符串表示形式。

需要注意的是,apply函数的返回值是对象本身,即TextView对象。

使用also扩展函数函数的简单程序例子

also函数通常用于在对象上执行一些操作,并返回对象本身。以下是一个简单的Kotlin程序例子,使用了also函数来创建一个新的字符串并执行操作:

fun main() {
    val str = "Hello"
    val result = str.also {
        println("The original string is: $it")
    }
    println(result)
}

在这个例子中,我们定义了一个字符串str,并使用also函数来执行一些操作。在also函数中,我们使用了lambda表达式中的it关键字引用了str对象本身,并输出了一个带有it变量的字符串。然后,also函数返回str对象本身,并将其赋值给result变量。最后,我们使用println()函数输出result的值,即str字符串本身。

需要注意的是,also函数的返回值是对象本身,即str对象。文章来源地址https://www.toymoban.com/news/detail-627409.html

到了这里,关于kotlin的扩展函数“let、run、also、apply”的作用和区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kotlin 比较 let apply

    `let` 和 `apply` 是 Kotlin 标准库中的两个非常有用的函数,它们用于在代码中实现更简洁和可读的操作。它们通常在函数式编程和链式调用中使用,以简化代码并提高可维护性。下面是关于这两个函数的详细解释: `let` 函数是一个作用域函数,它接收一个对象作为参数,并在作

    2024年02月11日
    浏览(32)
  • kotlin标准函数also

    在 Kotlin 中,also 是一个标准库函数,其作用是将一个对象作为参数传递给 Lambda 表达式,并返回该对象本身 。语法如下: 使用 also 可以使代码更加简洁,常用于一系列需要对同一个对象进行多次操作的场景。例如: 上述代码首先输出字符串的长度,然后将其赋值给 length 变

    2024年02月06日
    浏览(45)
  • 【34JavaScript let 和 const】JavaScript中的“let“和“const“关键字详解:作用、用法及区别

    // 使用 let 声明变量 let x = 10; // 在同一作用域内重新赋值 x = 20; // 在不同的作用域内使用 let 声明变量 function example() { let y = 30; console.log(x); // 输出:20 console.log(y); // 输出:30 } console.log(x); // 输出:20 console.log(y); // 报错:y is not defined // 使用 const 声明常量 const PI = 3.14159; // 尝

    2024年02月08日
    浏览(43)
  • let、const、var的区别,解构赋值,箭头函数

    使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。 使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。 使用const声明的是常量,在后面出现的代码块中,不能在修改改常量的值。 var let const 函数级作用域 块级作用域 块级作用域 变量提

    2024年02月05日
    浏览(49)
  • kotlin扩展函数

    Kotlin的扩展函数是一种特殊的函数,允许在不修改原始类定义的情况下向现有类添加新的函数。 扩展函数可以像普通函数一样使用,并且可以在任何地方调用。定义一个扩展函数,可以使用以下语法: 其中 ClassName 是要扩展的类的名称, functionName 是要添加的函数的名称,

    2024年02月13日
    浏览(33)
  • ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

    ​ ECMAScript 6.0,简称 ES6,是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaSc

    2024年04月15日
    浏览(44)
  • Kotlin扩展函数与属性原理解析

    扩展函数可以方便地给现有类增加属性和方法而不改动类地代码。 反编译: 可以看出扩展函数实际上是生成了一个静态方法,并且将被扩展的类的对象传进了函数中。 由此我们可以知道: 我们在扩展函数中可以访问被扩展的类的函数与属性,但是不能访问私有的函数与属性

    2024年02月19日
    浏览(30)
  • kotlin学习(二)泛型、函数、lambda、扩展、运算符重载

    Kotlin 中的类可以有类型参数,与 Java 类似: 创建这样类的实例只需要提供类型参数即可: 如果类型参数可以推断出来,例如从构造函数的参数或者从其他途径,就可以省略类型参数: String作为Object的子类,就可以直接将子类对象赋值给父类,这个操作即达到了 型变 。 但是

    2024年02月09日
    浏览(39)
  • 【React系列】ES6学习笔记(一)let与const、解构赋值、函数参数默认值\rest参数\箭头函数、数组和对象的扩展、Set和Map等

    本文参考自电子书《ECMAScript 6 入门》:https://es6.ruanyifeng.com/ 尽量使用 let 声明变量,而不是 var 。 let 声明的变量是 块级作用域 , var 声明的变量是 全局作用域 。 使用 let 变量 必须先声明再使用,否则报错,不存在变量提升 。相对的 var 声明的变量如果提前使用,不会报错

    2024年02月03日
    浏览(52)
  • 【Kotlin】函数式编程 ③ ( 早集合与惰性集合 | 惰性集合-序列 | generateSequence 序列创建函数 | 序列代码示例 | take 扩展函数分析 )

    及早集合 与 惰性集合 : 及早集合 : Eager Collection , 指的是 List , Map , Set 等集合 , 这些集合创建后 , 需要 将元素提前存储到集合中 , 然后才能访问 ; 惰性集合 : Lazy Collection , 在 集合刚创建时不必将集合元素放进去 , 当使用这些元素时才生成 , 这些 集合元素按需产生 ; 在 惰性集

    2024年02月02日
    浏览(104)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包