kotlin不容忽视的小细节

简介: kotlin不容忽视的小细节

kotlin支持扩展函数

Kotlin的扩展函数可以让你作为一个类成员进行调用的函数,但是是定义在这个类的外部。这样可以很方便的扩展一个已经存在的类,为它添加额外的方法。

rxjava线程切换:

fun <T> Observable<T>.setThread(): Observable<T> {
    return subscribeOn(Schedulers.io())
         .observeOn(AndroidSchedulers.mainThread())
}

findViewById:

fun <V : View> Activity.bindView(id: Int): Lazy<V> {
    return lazy { findViewById<V>(id) }
}

更加通用的自定义表达式:

    fun <T> T.checkExpression(expression: Boolean, function: T.() -> T): T {
        if (expression) {
            function.invoke(this)
        }
        return this
    }

    还可以定义些通用函数

      /**
       * int px转dp
       */
      fun Int.toDp(): Int{
          val scale = App.context.resources.displayMetrics.density
          return (this * scale + 0.5f).toInt()
      }
      /**
       * float px转dp
       */
      fun Float.toDp(): Float{
          val scale = App.context.resources.displayMetrics.density
          return this * scale + 0.5f
      }
      /**
       * List<T>转Map<K,T>,获取对数据
       */
      inline fun <K,T> Iterable<T>.toMap(transform: (T) -> K): MutableMap<K, T>{
          val map = mutableMapOf<K, T>()
          forEach {
              map[transform.invoke(it)] = it
          }
          return map
      }
      /**
       * List<T>转List<R>
       */
      inline fun <T, R> Iterable<T>.convert(transform: (T) -> R): Iterable<R>{
          val list = mutableListOf<R>()
          forEach {
              list.add(transform.invoke(it))
          }
          return list
      }

      协程

      类似于线程,但是占用内存更低且更高效,同时在协程中执行代码,是顺序执行,而java 线程需要通过回调。

            // do first: main
            // do async: DefaultDispatcher-worker-5
            // do end: main
            GlobalScope.launch(Dispatchers.Main) {
                println("do first: ${Thread.currentThread().name}")
                GlobalScope.async(Dispatchers.Default) {
                    println("do async: ${Thread.currentThread().name}")
                }.await()
                println("do end: ${Thread.currentThread().name}")
            }

        kotlin的lambda表达式规则

        不用lambda表达式:

          // 这里举例一个Android中最常见的按钮点击事件的例子
          mBtn.setOnClickListener(object : View.OnClickListener{
                  override fun onClick(v: View?) {
                      Toast.makeText(this,"onClick",Toast.LENGTH_SHORT).show()
                  }
              })

          等价于:

            // 调用
            mBtn.setOnClickListener { v -> Toast.makeText(this,"onClick",Toast.LENGTH_SHORT).show() }

            特性如下:

            • 表达式总是被大括号括着
            • 其参数(如果存在)在 -> 之前声明(参数类型可以省略)
            • 函数体(如果存在)在 -> 后面

            相比java8的lambda表达式,还有其他特性:

            当方法中最后一个参数为函数类型,则可以放在大括号调用

              fun lambdaFun(boolean: Boolean, block: (Int) -> Unit){
              }
              fun lambdaFunTest(){
                  lambdaFun(true, block = {
                  })
                  lambdaFun(true){
                  }
              }

              it

              it是在当一个高阶函数中Lambda表达式的参数只有一个的时候可以使用it来使用此参数。it可表示为单个参数的隐式名称,是Kotlin语言约定的。

                val arr = arrayOf(1,3,5,7,9)
                // 过滤掉数组中元素小于2的元素,取其第一个打印。这里的it就表示每一个元素。
                println(arr.filter { it < 5 })
                相关文章
                |
                2月前
                |
                Java 调度 Android开发
                构建高效Android应用:探究Kotlin多线程编程
                【2月更文挑战第17天】 在现代移动开发领域,性能优化一直是开发者关注的焦点。特别是在Android平台上,合理利用多线程技术可以显著提升应用程序的响应性和用户体验。本文将深入探讨使用Kotlin进行Android多线程编程的策略与实践,旨在为开发者提供系统化的解决方案和性能提升技巧。我们将从基础概念入手,逐步介绍高级特性,并通过实际案例分析如何有效利用Kotlin协程、线程池以及异步任务处理机制来构建一个更加高效的Android应用。
                |
                1月前
                |
                安全 Java Android开发
                使用Kotlin进行Android应用开发:高效、简洁与乐趣并存
                【6月更文挑战第1天】Kotlin,JetBrains开发的静态类型语言,正日益成为Android开发首选。它与Java兼容,提供简洁、安全的语法,如空安全、扩展函数和Lambda表达式,提升开发效率和代码可读性。Kotlin在Android开发中的优势包括提高开发速度、降低学习曲线及强大的社区支持。实践中,数据类简化对象创建,扩展函数增强SDK,Lambda表达式简化回调处理,协程优化异步操作。掌握Kotlin对Android开发者极具价值。
                |
                7天前
                |
                安全 Java Android开发
                探索安卓应用开发中的Kotlin语言优势
                【7月更文挑战第8天】 在安卓开发的广阔天地中,Kotlin以其优雅的语法、现代化的特性和高效的性能成为了开发者的新宠。本文将深入探讨Kotlin在安卓应用开发中所展现的独特魅力,从语言特性到实际应用案例,揭示其如何简化代码编写、提升开发效率,并增强应用性能。通过对比分析,我们将一同见证Kotlin如何在众多编程语言中脱颖而出,成为安卓开发领域的一股清新之风。
                192 11
                |
                2月前
                |
                API 调度 Android开发
                打造高效Android应用:探究Kotlin协程的优势与实践
                【5月更文挑战第27天】在移动开发领域,性能优化和响应速度是衡量应用质量的关键因素。随着Kotlin语言的普及,协程作为其核心特性之一,为Android开发者提供了一种全新的并发处理方式。本文深入探讨了Kotlin协程在Android应用开发中的优势,并通过实例演示如何在实际项目中有效利用协程提升应用性能和用户体验。
                |
                2月前
                |
                调度 数据库 Android开发
                构建高效安卓应用:探究Kotlin协程的优势
                【5月更文挑战第27天】在移动开发领域,性能优化和流畅的用户体验始终是开发者追求的核心目标。随着Kotlin语言在Android平台的广泛采用,其提供的协程功能已经成为实现异步编程和提升应用响应性的重要工具。本文将深入探讨Kotlin协程在Android开发中的应用优势,通过与传统线程和回调机制的对比,揭示协程如何简化代码结构、提高执行效率,并最终增强应用性能。我们将从协程的基本概念出发,逐步解析其在网络请求、数据库操作和UI线程中的具体实践,以期为Android开发者提供性能优化的新思路。
                |
                2月前
                |
                移动开发 数据库 Android开发
                构建高效Android应用:探究Kotlin的协程优势
                【5月更文挑战第22天】随着移动开发技术的不断进步,Android平台的性能优化已经成为开发者关注的焦点。在众多提升应用性能的手段中,Kotlin语言提供的协程概念因其轻量级线程管理和异步编程能力而受到广泛关注。本文将深入探讨Kotlin协程在Android开发中的应用,以及它如何帮助开发者构建出更高效、响应更快的应用,同时保持代码的简洁性和可读性。
                |
                2月前
                |
                移动开发 Java Android开发
                Android应用开发:Kotlin语言的优势与实践
                【5月更文挑战第7天】 在移动开发的世界中,Android平台的Kotlin语言以其高效、简洁的语法和强大的功能吸引了众多开发者。本文将深入探讨Kotlin语言的核心优势,并通过实际案例展示如何在Android应用开发中有效地运用这一现代编程语言。我们将从语言特性出发,逐步分析其在提升开发效率、改善代码质量以及增强应用性能方面的具体表现,为读者提供一个全面而细致的Kotlin应用开发指南。
                |
                2月前
                |
                移动开发 调度 Android开发
                构建高效Android应用:探究Kotlin协程的优势
                【5月更文挑战第28天】在移动开发领域,性能优化和资源管理是持续的挑战。为了应对这些挑战,Android开发者转向了多种解决方案,其中Kotlin协程作为一种新兴的异步编程范式,正逐渐受到关注。本文将深入探讨Kotlin协程如何改善Android应用的性能、提高代码可读性以及简化异步逻辑,同时通过实例演示其在实际应用中的实现方式。
                |
                2月前
                |
                移动开发 调度 Android开发
                构建高效Android应用:探究Kotlin协程的最佳实践
                在移动开发领域,性能优化和资源管理是至关重要的。特别是对于Android开发者来说,合理利用Kotlin协程可以大幅提升应用的响应性和用户体验。本文将深入探讨Kotlin协程的核心概念、优势以及它们在Android项目中的实际应用。我们还将通过代码示例来揭示如何有效地使用协程进行后台任务处理,避免阻塞UI线程,并确保内存的有效管理。文章的目标是为读者提供一套实用的指南,帮助他们在Android开发中充分利用Kotlin协程的强大功能。
                33 1
                |
                2月前
                |
                API 调度 Android开发
                构建高效Android应用:探究Kotlin协程的实践之路
                【4月更文挑战第17天】 随着移动开发技术的不断演进,Android平台的性能优化已成为开发者关注的焦点。Kotlin协程作为一种新型的轻量级线程管理方案,在简化异步编程和提升应用响应性方面展现出巨大潜力。本文将深入探讨Kotlin协程在Android开发中的应用实践,从基本概念到实际案例,为开发者提供一条清晰、高效的学习路径,旨在帮助读者掌握协程技术,优化应用性能,提升用户体验。
                17 0