美文网首页
Kotlin那些实用的语法糖

Kotlin那些实用的语法糖

作者: b2d187b56305 | 来源:发表于2018-05-18 14:12 被阅读0次

使用with、apply、run简化代码,增强可读性

         //原始
        task_viewpager.setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL)
        task_viewpager.adapter = SentenceAdapter(taskList)
        task_viewpager.currentItem = index

        //apply
        task_viewpager.apply {
            setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL)
            adapter = SentenceAdapter(taskList)
            currentItem = index
        }

        //with
        with(task_viewpager){
            setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL)
            adapter = SentenceAdapter(taskList)
            currentItem = index
        }

        //run
        index = task_viewpager.run {
            setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL)
            adapter = SentenceAdapter(taskList)
            currentItem
        }

        

相比较而言使用apply更符合链式编程的习惯
run函数具有表达式的,它返回最后一行的值

其他函数

  • use
    用在 Java 上的 try-with-resources 表达式上
val input = Files.newInputStream(Paths.get("input.txt"))
val byte = input.use({ input.read() })
  • repeat
    它接受函数和整数作为参数,函数会被调用 n 次,这个函数避免写循环。
repeat(10, { println("Hello") })
  • require/assert/check
    检测条件是否为true, 否则抛出异常。 其中 require 用在参数检查; 而 assert/check 用在内部状态检查,assert 抛出 AssertionException 、 check 抛出 IllegalStateException。
require(true,{"error message"})

空指针处理,避免长串!!出现

  • 对于一个不可为空类型:如果直接给不可为空类型赋值一个可能为空的对象就在编译阶段就不能通过

  • 对于一个可空类型:通过?声明,在访问该类型的时候直接访问不能编译通过,需要通过?.或者!!.

  • 尽量多使用let 和 ?:代替!!

val user = User()
    user!!.name!!.subSequence(0,5)!!.length

val user: User? = User()

    //每次访问都用用?.判断
    user?.name
    user?.age
    user?.toString()

//提前判断非空
if (user != null) {
        user.name
        user.age
        user.toString()
    }
//let语句
user?.let {
        it.name
        it.age
        it.toString()
    }

扩展函数

fun Activity.toast(msg:String, duration:Int = Toast.LENGTH_SHORT){
    Toast.makeText(this,msg,duration)
}

fun Fragment.toast(msg:String, duration:Int = Toast.LENGTH_SHORT){
    Toast.makeText(activity,msg,duration)
}

toast("123")

相关文章

  • Kotlin那些实用的语法糖

    使用with、apply、run简化代码,增强可读性 相比较而言使用apply更符合链式编程的习惯run函数具有表...

  • Android日常开发Tips记录

    kotlin DCL单例 ?:等价于if(instance == null ){},.also为kotlin语法糖...

  • Android Kotlin实用的语法糖,真甜!

    前言 Kotlin被Google官方认为是Android开发的一级编程语言。今天,我将主要讲解,关于Kotlin的...

  • Kotlin语法糖

    一、Kotlin 支持三个引号 """ 扩起来的字符串,支持多行字符串,比如: 二、字符串模板字符串可以包含模板表...

  • kotlin 语法糖?

    唯品会那会,技术分享,正愁主题。刷圈看到老大分享的技术文章,关于kotlin的。猎奇之后,哎哟,挺好玩的。 庞然大...

  • Kotlin语法糖

    Kotlin语法糖 Kotlin 语言是一种新的静态类型编程语言,可运行于 JVM 环境同时也能用来开发 Andr...

  • kotlin语法糖

    kotlin withfun with(receiver: T, f: T.() -> R): R ...

  • kotlin语法糖实现

    对于kotlin和java,两个语言都是在jvm上运行的,所以它们最终生产的字节码将会是一致的。对于kotlin的...

  • Kotlin语法糖--基础

    不管你学习什么语言,开篇都是介绍基本类型,然后就是诸如控制流这种入门语法,随后就是对象、函数的使用,最后就是此语言...

  • Kotlin语法糖--开始

    谷歌宣布Kotlin成为Android官方开发语言已经4个多月了,相信你或多或少的已经开始接触Kotlin语言了。...

网友评论

      本文标题:Kotlin那些实用的语法糖

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