语言的简略写法学习
const val name =“xiaoming”
const val pas =“123456”
fun login(name:String, pas:String, responseResult:(String,Int)->Unit){
If(name==null||pas==null){
Toast(“用户名密码为空”)
responseResult(“faild”,201)
}else{
responseResult(“success”,200)
}
}
//简略写法调用
login(name,pas){str,code->
//code ==200登录成功
}
//正常调用
login(name,pas,{str,code->
//code ==200登录成功
})
内联函数
//内联函数,使用lambda作为参数才可以使用内联函数
//如果此函数不使用内联,调用的时候会生成多个对象完成lambda的调用,损耗性能,想当与c++ #define。宏定义 宏替换,会把代码替换到调用出,调用不用创建对象创建
//如果函数参数有lambda 尽量使用inline关键字,减少性能开支
fun inline login(name:String, pas:String, responseResult:(String,Int)->Unit){
If(name==null||pas==null){
Toast(“用户名密码为空”)
responseResult(“faild”,201)
}else{
responseResult(“success”,200)
}
}
语言的函数引用
inline fun login(name:String, pas:String,responseResult:(String,Int)->Unit){
If(name==null||pas==null){
Toast(“用户名密码为空”)
responseResult(“faild”,201)
}else{
responseResult(“success”,200)
}
fun mothod(mg:String,code:String){
“结果是${msa} ${code}"
}
//调用,传一个函数::把普通函数转成函数变量
login(“name”,”pass”,:: mothod)
//也可以这样
val obj=::mothod
login(“name”,”pass”,:: obj)
}
函数类型作为返回类型
//返回boolean
fun Show(info:String):Boolean{
Tost(“我是show${info}”)
return true
}
//返回string
fun Show2(info:String):String{
Tost(“我是show${info}”)
Return “hello"
}
//返回一个匿名函数,匿名函数返回值是string
fun Show3(info:String):(String,Int)->String{
Tost(“我是show${info}”)
Return {name:String, age:Int->
“我是匿名函数入参是(String,Int)返回String"
}
匿名函数和具名函数
Inline fun showUser(name:String,age:String,sex:Chat,showResule:(String)->Unirt){
Val str=“名字${name}年龄${age}性别${sex}”
showResule(str)
}
//调用匿名函数
showUser(“lisi”,99,’男’){
Tost(“${it}”)
}
//具名函数,有具体的名字
funshowUser(resule:String,:: showUser())
Inline fun showUser(name:String,age:String,sex:Chat,showResule:(String)->Unirt){
Val str=“名字${name}年龄${age}性别${sex}”
showResule(str)
}
//小节:java需要写一些接口来实现,相对复杂