规范

作者: 主音King | 来源:发表于2018-12-07 10:43 被阅读0次

    is 使用
    如果context参数但是要用到activity。比如

    actvity.overridePendingTransition
    

    如果使用(报红)

    context.overridePendingTransition
    

    处理(正确使用)

    if (context is Activity) {
      context.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
    }
    

    使用可空值及null检测
    某个变量值可以为null时,必须在声明处的类型后添加 ? 该引用可为空

    var name: String? = null
    

    ? 加在变量名后,系统在任何情况不会报它的空指针异常。

    textView?.text = "hello"
    //类型后面加?表示可为空
    var age: String? = "23"
    //age为空返回-1
    val ages2 = age?.toInt() ?: -1
    

    !!加在变量名后,如果对象为null,那么系统一定会报异常

    textView!!.text="hello"
    

    定义函数
    Unit:返回无意义的值,可以省略

    fun printSum(a: Int, b: Int): Unit {
        println("sum of $a and $b is ${a + b}")
    }
    

    invoke
    {}符号, 是lambda表达式的符号

    // 一个参数
    var callback: ((str: String) -> Unit)? = null
    callback = { println(it)}
    // 判断并使用
    callback?.invoke("hello")
    //两个参数
    var callback2: ((name: String, age: Int) -> Unit)? = null
    callback2 = { hello: String, world: Int -> println("$hello's age is $world") }
    callback2?.invoke("Tom", 22)
    //类型可以推断
    callback3 = { num1, num2 ->
        var res:Int = num1 + num2
        res.toString()
    }
    
    println(callback3?.invoke(1, 2))
    

    ==和===
    ==:比较值
    ===:两个对象的地址是否相等

    val a: Int = 10
    val b: Int = a
    val c: Int = a
    println(b == c)// true
    println(b === c)// false

    相关文章

      网友评论

          本文标题:规范

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