1.理解:在一个函数中有一个参数a,这个参数a又属于一个函数,a即时参数又是函数
2.用kotlin实现登录
/*** You can edit, run, and share this code.* play.kotlinlang.org*/
fun main() {//调用传参//普通参数传入即可,针对在调用函数中的参数函数传入使用匿名函数,匿名方法的返回值作为最终的打印结果://输入传参在调用该方法时传入即login方法中传入参数 responseResult("login success",200),,在主函数中使用匿名函数传入参数,并实现这个函数后输出最终的打印结果val info=login("kotlin","123456"){msg:String,code:Int->"登录结果:$msg,$code" //隐式返回}println(info)
}//模拟数据库SQLServer
const val USER_NAME_DB="kotlin"
const val USER_PWD_DB="123456"//登录
/** responseResult:(String,Int)->Unit) 传入响应结果的参数,同时也是获取响应结果的函数* * TODO()//Nothing类型,出现问题,终止程序** */
fun login(username:String,password:String,responseResult:(String,Int)->String):String{if(username==null||password==null){TODO("账号密码为空")//Nothing类型,出现问题,终止程序}//登录校验if(username.length>3&&password.length>3){if(isLogin(username,password)){//登录成功逻辑,以及处理登录成功后的业务//登录成功后返回响应结果,调用参数中的responseResult:(String,Int)->Unit)return responseResult("login success",200)}else{//登录失败逻辑,以及处理登录失败后的业务//登录失败后返回响应结果,调用参数中的responseResult:(String,Int)->Unit)return responseResult("login failed",444)}}else{TODO("账号密码不符合规范")//Nothing类型,出现问题,终止程序}return ""
}//登录校验
private fun isLogin(username:String,password:String):Boolean{return if(username==USER_NAME_DB && password==USER_PWD_DB) true else false
}
执行结果
3.调用传参的简单写法(多种写法)
/*** You can edit, run, and share this code.* play.kotlinlang.org*/
fun main() {//调用传参---第一种方式//普通参数传入即可,针对在调用函数中的参数函数传入使用匿名函数,匿名方法的返回值作为最终的打印结果://输入传参在调用该方法时传入即login方法中传入参数 responseResult("login success",200),,在主函数中使用匿名函数传入参数,并实现这个函数后输出最终的打印结果val info=login("kotlin","123456"){msg:String,code:Int->"登录结果:$msg,$code" //隐式返回}println(info)//调用传参---第二种方式//符合正常逻辑的传参格式:login(username:String,password:String,responseResult:(String,Int)->String):String),这里第三个参数也是实现体,val info2=login("kotlin","123456",{msg:String,code:Int->"登录结果:$msg,$code" //隐式返回})println(info2)//调用传参---第三种方式,类型推断的匿名函数val info3=login("kotlin","123456",responseResult={msg:String,code:Int->"登录结果:$msg,$code" //隐式返回})println(info3)
}//模拟数据库SQLServer
const val USER_NAME_DB="kotlin"
const val USER_PWD_DB="123456"//登录
/** responseResult:(String,Int)->Unit) 传入响应结果的参数,同时也是获取响应结果的函数* * TODO()//Nothing类型,出现问题,终止程序** */
fun login(username:String,password:String,responseResult:(String,Int)->String):String{if(username==null||password==null){TODO("账号密码为空")//Nothing类型,出现问题,终止程序}//登录校验if(username.length>3&&password.length>3){if(isLogin(username,password)){//登录成功逻辑,以及处理登录成功后的业务//登录成功后返回响应结果,调用参数中的responseResult:(String,Int)->Unit)return responseResult("login success",200)}else{//登录失败逻辑,以及处理登录失败后的业务//登录失败后返回响应结果,调用参数中的responseResult:(String,Int)->Unit)return responseResult("login failed",444)}}else{TODO("账号密码不符合规范")//Nothing类型,出现问题,终止程序}return ""
}//登录校验
private fun isLogin(username:String,password:String):Boolean{return if(username==USER_NAME_DB && password==USER_PWD_DB) true else false
}
执行结果