‘!!’和‘?’
kotlin语法中FragmentPagerAdapter中的getItem()
方法,如果还像Java方式使用会报错,如下
override fun getItem(position: Int): Fragment {
return fragmentList[position]
}
按照编译器提示修改后(编译器会提示使用‘!!’和‘?’)
override fun getItem(position: Int): Fragment {
return fragmentList!![position]
}
发现中间多了’!!'符号,查阅kotlin文档后得知
?:表示当前对象可以为空
!!:表示不为空的情况执行
更多kotlin空和非空操作,参考kotlin中文网https://www.kotlincn.net/docs/reference/
let操作符
kotlin使用let操作符处理可空表达式。
if (a != null){
System.out.println("a");
}else {
System.out.println("null");
}
使用let操作符
a?.let { System.out.println("a") } ?: a.let { System.out.println("null"); }
is 运算符
is运算符检测一个表达式是否是某类型的实例
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// `obj` 在该条件分支内自动转换成 `String`
return obj.length
}
// 在离开类型检测分支后,`obj` 仍然是 `Any` 类型
return null
}