Kotlin标准函数与静态方法应用详解

目录
  • 标准函数
    • with函数
    • run函数
    • apply函数
  • 静态方法
    • 单例类
    • companion object
    • 注解
    • 顶层方法

标准函数

  • 标准函数就是在Standard.kt文件中定义的函数,任何Kotlin代码都可以自由地调用所有的标准函数
  • let函数就属于是一个标准函数,经常配合?.操作符来进行判空处理

with函数

with函数接收两个参数,第一参数可以是任何类型的对象,第二个参数是一个Lambda表达式

with函数会在Lambda表达式中提供第一个参数的上下文,并使用Lambda表达式的最后一行代码作为函数的返回值

示例代码

val res = with(obj) {
    //这里是obj对象的上下文
    "value"//这里是with函数的返回值
}

with函数的作用.假如现在有个需求让吃完所有的水果并且将结果打印出来,代码可以这样写

fun main() {
    doSomething()
}
fun doSomething() {
    val list = listOf<String>("Apple", "Banana", "Pear")
    val sb = StringBuilder()
    sb.append("Start eating fruits.\n")
    for (fruits in list) {
        sb.append(fruits).append("\n")
    }
    sb.append("Ate all fruits.")
    val res = sb.toString()
    println(res)
}

利用with函数可以这样写,可以看到在Lambda表达式中,都是StringBuilder的上下文,那么就不需要我们通过StringBuilder的实例调用append()方法了,而是直接使用append()方法即可.

fun withTest() {
    val list = listOf<String>("Apple", "Banana", "Pear")
    val res = with(StringBuilder()) {
        append("Start eating fruits.\n")
        for (fruits in list) {
            append(fruits)
            append("\n")
        }
        append("Ate all fruits.")
        toString()//最后一行就是函数的返回值
    }
    println(res)
}

run函数

  • run函数和with函数基本类似,区别就是,run函数不能直接调用,需要在某个对象的基础上进行调用
  • 其次run函数只接受一个Lambda参数,并且在Lambda表达式中提供调用对象的上下文.
  • 其他和with函数都是一样的
  • 使用run函数完成上述需求的实例
fun runTest() {
    val list = listOf<String>("Apple", "Banana", "Pear")
    //将StringBuilder调出来,用来调用run函数
    val res = StringBuilder().run {
        append("Start eating fruits.\n")
        for (fruits in list) {
            append(fruits)
            append("\n")
        }
        append("Ate all fruits.")
        toString()
    }
    println(res)
}

apply函数

  • apply函数和run函数基本一样,就是apply函数不能指定返回值,只能返回调用调用者的本身
  • apply函数实例
fun applyTest() {
    val list = listOf<String>("Apple", "Banana", "Pear")
    val res = StringBuilder().apply {
        append("Start eating fruits.\n")
        for (fruits in list) {
            append(fruits)
            append("\n")
        }
        append("Ate all fruits.")
    }
    println(res.toString())
}

静态方法

  • 静态方法又叫做类方法,就是说不需要实例,直接用类就可以进行调用,一般会将工具类中的方法设置为静态方法,方便调用
  • 在java当中的静态方法就是使用static关键字修饰的方法
  • 但是在kotlin当中没有直接的静态方法

单例类

在kotlin当中要是想要定义一个工具类,会比较推荐单例类进行实现

object Util {
    fun doAction() {
        println("do something")
    }
}

虽然单例类中的doAction()方法并不是静态放啊,但是我们还是可以直接使用Util.doAction()来进行调用

但是单例类的缺点是单例类中的方法都是类似静态方法这种调用方式,但是我们只需要让类中的一个方法变成静态的怎么办?

companion object

在companion object中定义的方法就可以类似于静态方法那样进行调用了

class Util {
    //非静态方法属性
    fun doAction1() {
    }
    //拥有静态方法的属性
    companion object {
        fun doAction2() {
        }
    }
}

注解

单例类和companion object都是在语法形式上模仿了静态方法,实际上不属于真正的静态方法

如果我们给单例类或者companion object中的方法加上@JvmStatic注解,那么kotlin编译器就会将这些方法编译成为真正的静态方法

如下

class Util {
    //非静态方法属性
    fun doAction1() {
    }
    //拥有静态方法的属性
    companion object {
        @JvmStatic
        fun doAction2() {
        }
    }
}

@JvmStatic只能加在单例类或者companion object中的方法

顶层方法

  • 顶层方法指的就是没有定义在任何类中的方法,kotlin编译器会将所有的顶层方法编译成为静态方法
  • 因此只要定义了一个顶层方法,那么他肯定是一个静态方法

到此这篇关于Kotlin标准函数与静态方法应用详解的文章就介绍到这了,更多相关Kotlin标准函数与静态方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Kotlin标准函数与静态方法基础知识详解

    目录 标准函数with与run和apply with函数 with函数 run函数 apply函数 定义静态方法 标准函数with与run和apply with函数 with函数 接收两个参数:第一个参数可以是任意类型的对象,第二个参数是一个Lambda表达式.with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回. 示例代码如下: val result=with(obj){ //这里是obj的上下文 "value"//w

  • Kotlin 标准函数和静态方法示例详解

    目录 标准函数 with run Apply 定义静态方法 注解 顶层方法 标准函数 with with 的作用是可以在连续调用同一对象的多个方法时让代码变得更加精简 val result = with(obj){ //这里是obj的上下文 "value" //with 函数的返回值 } 看个例子,例如有一个水果列表,现在我们想吃完所有水果,并将结果打印出来 val list = listOf("Apple","Banana","Ora

  • kotlin快速入门之标准函数与静态方法

    目录 标准函数 with run apply 静态方法 单例类实现静态方法 伴生类实现静态方法 注解实现静态方法 顶层方法实现静态方法 总结 标准函数 首先我们介绍标准函数 with.run.apply,如果你了解javascript,那理解kotlin的标准函数width.run.apply那简直不要太轻松.with.run.apply与javascript中的with的意义基本一模一样,只是含有一些细微差别. with with它接收两个参数,第一个参数可以是任意类型的对象,第二个参数是一个

  • Kotlin标准函数与静态方法应用详解

    目录 标准函数 with函数 run函数 apply函数 静态方法 单例类 companion object 注解 顶层方法 标准函数 标准函数就是在Standard.kt文件中定义的函数,任何Kotlin代码都可以自由地调用所有的标准函数 let函数就属于是一个标准函数,经常配合?.操作符来进行判空处理 with函数 with函数接收两个参数,第一参数可以是任何类型的对象,第二个参数是一个Lambda表达式 with函数会在Lambda表达式中提供第一个参数的上下文,并使用Lambda表达式的

  • Kotlin开发Android应用实例详解

    Kotlin开发Android应用实例详解 相关文章:关于Kotlin语言的基础介绍: http://www.jb51.net/article/114086.htm 我们简单的知道了Kotlin这门新语言的优势,也接触了一些常见的语法及其简单的使用,相信你会对它有浓厚的兴趣,暂且理解为对它感兴趣吧,哈哈哈.那么,我们该如何在Android中应用这门新的语言呢?今天的这篇文章带你学习使用Kotlin开发Android应用,并对比我们传统语言Java,让你真真切切的感受到他的美和优雅. 配置 项目g

  • Kotlin中常见的符号详解

    前几年的Google I/O大会上,Google正式宣布,Kotlin将会成为Android开发的官方支持语言.除了Android外,Kotlin还可以完全作为服务端开发的语言,比如在未来的Spring 5就将对Kotlin提供强大的支持.以及浏览器编程语言,与JS进行交互. Kotlin是一门静态语言,支持多种平台,包括移动端.服务端以及浏览器端,此外,Kotlin还是一门融合了面向对象与函数式编程的语言,支持泛型.安全的空判断,并且Kotlin与Java可以做到完全的交互. 现在介绍Kotl

  • Kotlin之自定义 Live Templates详解(模板代码)

    想必大家都知道 android studio 的 live templates 功能,那真是各种方便,比如你想使用 newInstance 去生成一个类的实例: 简直不要太方便! 当今 kotlin 流行起来了,你在使用 kotlin 开发 android 的时候,是不是发现以前用的 logt.loge.newinstance-,这些快捷创建代码片段的方式都不能用了,没关系,来一起自定义吧年轻人~ 打开 android studio >> File >> Settings ,搜索

  • python编程普通及类和静态方法示例详解

    目录 前言 运行环境 普通方法 类方法 静态方法 前言 本文主要讲述了python类中的三类常用方法,普通方法.类方法和静态方法.  本文主要参考了https://youtu.be/rq8cL2XMM5M,强烈推荐一看这个系列的所有视频. 运行环境 import sys sys.version 结果为 '3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)]' 普通方

  • Kotlin与Java的区别详解

    什么是Kotlin? Kotlin是一种可以在 Java 虚拟机 (JVM) 上运行的开源编程语言.该语言可以在许多平台上运行. 它是一种将面向对象编程 (OOP) 和函数式编程结合在一个不受限制.自给自足且与众不同的平台中的语言. 什么是Java? Java 是一种多平台.面向对象.以网络为中心的编程语言.它是最常用的编程语言之一.它也用作计算平台,最早由 Sun Microsystem 于 1995 年发布,后来被 Oracle 公司收购. 主要区别: Kotlin 结合了面向对象和函数式编

  • Android开发Kotlin实现圆弧计步器示例详解

    目录 效果图 定义控件的样式 自定义StepView 绘制文本坐标 Android获取中线到基线距离 效果图 定义控件的样式 看完效果后,我们先定义控件的样式 <!-- 自定义View的名字 StepView --> <!-- name 属性名称 format 格式 string 文字 color 颜色 dimension 字体大小 integer 数字 reference 资源或者颜色 --> <declare-styleable name="StepView&q

  • Kotlin协程launch原理详解

    目录 正文 launch使用 launch原理 CoroutineStart中找invoke方法 startCoroutineCancellable逻辑 小结 正文 launch我们经常用,今天来看看它是什么原理. 建议: 食用本篇文章之前记得先食用Kotlin协程之createCoroutine和startCoroutine launch使用 launch我们应该很熟悉了,随便举个例子: fun main() { val coroutineScope = CoroutineScope(Job(

随机推荐