Unit类型,让函数调用皆为表达式
1:java中void表示没有返回值类型的函数
//没有返回值的函数
void foo(){
//do ***
}
2:如何理解Kotlin中的Unit
Unit是一个类型,他不代表任何信息,他是一个单例,他的实例只有一个,可写为()
此类型可用来做函数做为参数,传递 或者当返回值
符合表达式
相比于语句 表达式更倾向于自成一块,避免与上下文共享状态,相互依赖,因此我们说他具备更好的[隔离性],所以更加安全
表达式还有一定表达能力,也可以组合使用
var res:Int?=try {
if(result.success){
jsonDecode(result.response)
}else{
null
}
}catch(e: JsonDecodeException){
null
}
?: ELvis
和java的三元运算符很像
val mabyInt:Int?=null
--->> mabyInt?:1
输出:1
中缀表达式
in,step,downTo,until,可以不通过点号,而是通过中缀表达式来调用,从而让语法更加简洁和直观
A 中缀方法 B
结论:
1:该中缀方法必须是这个类型的扩展函数
2:该中缀方法只能有一个参数,,参数也不可能是可变参数
3:kotlin支持默认值,中缀方法不允许有默认值,会对中缀表达式造成破坏
可变参数
kotlin使用vararga定义函数中的可变参数,类似java的...;java的可变参数必须是最后一位,kotlin没有这个限制
fun Test(vararaga str:String,count:Int){
}
infix 定义一个中缀表达式
class Test{
infix fun call(name:String){
print("my name is ${name}")
}
}
fun main (args:Array<String>){
val p =Person()
p call "Shaw"
//结果
--> my name is Shaw
}
isBlank
val str1 = " "
val str2 = "Hello World"
val str3 = ""
println(str1.isBlank()) // 输出 true,因为字符串只包含空白
println(str2.isBlank()) // 输出 false,因为字符串不是空且包含非空白字符
println(str3.isBlank()) // 输出 true,因为字符串是空的