1、?为非空安全符
var str: String? = null
str?.let{
if(it.isNotBlank()){
it.capitalize()//大写
}else{
"i'm str"
}
}
2.!!为非空断言符
var str: String? = null
str!!.capitalize()
输出:
Exception in thread "main" kotlin.KotlinNullPointerException
at SpecialFunKt.main(SpecialFun.kt:5)
at SpecialFunKt.main(SpecialFun.kt)
3.?:空合并操作符
var str: String? = null
println(str?:"jack")
输出:
jack
4.let 第一次参数为调用者本身,返回结果。
5.also 同let,但是返回结果。
var str = "str".let{
it=="str"
}
var str2 = "str".also {
it=="str"
}
println(str)
println(str2)
输出:
true
str
6.apply 返回的参数为接收者本身
var str = "one"
var str2: String = str.apply {
str=replace("one", "two")
}
println(str)
println(str2)
输出:
two
one
7.run 返回结果
var str = "one"
var str2: String = str.run {
replace("one", "two")
}
println(str2)
输出:
two
8.with 同run
var str = "one"
var relut = str.run {
length>2
}
var result = with(str){
length>2
}
println(relut)
println(result)
输出:
true
true
9.takeIf 同apply true返回接收者对象,false 返回null ,takeUnless 与takeIf 相反。
var str = "str".takeIf {
it == "str"
}
var str2 = "str".takeIf {
it == "sss"
}
println(str)
println(str2)
输出:
str
null