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
网友评论