Kotlin中Lambda的使用于理解:匿名函数 == Lambda 表达式
fun main(args: Array<String>) {
//匿名函数 == Lambda 表达式
val addResultMethod = { number1: Int, number2: Int ->
"两数相加之和:${number1 + number2}"
}//addResultMethod:(Int, Int)->String
println(addResultMethod(55, 22))
//匿名函数 入参Int, 返回 Any类型
//lambda表达式的参数Int, lambda表达式的结果Any类型
val weekResultMethod = { number: Int ->
when (number) {
1 -> "星期一"
2 -> "星期二"
3 -> "星期三"
4 -> "星期四"
5 -> "星期五"
6 -> "星期六"
7 -> "星期日"
else -> -1
}
}//weekResultMethod:(Int)->Any
println(weekResultMethod(4))
/*----------------------------------------------------*/
val serverResponse = { responseMsg: String, responseCode: Int ->
println("最终拿到服务器响应的结果是:responseMsg:$responseMsg, responseCode:$responseCode")
}
doLogin("yuknight", "123456", serverResponse)
/*----------------------------------------------------*/
doLogin("yuknight", "123456") { responseMsg: String, responseCode: Int ->
println("最终拿到服务器响应的结果是:responseMsg:$responseMsg, responseCode:$responseCode")
}
/*----------------------------------------------------*/
//lambda函数返回值为String
val serverResponse1 = { responseMsg: String, responseCode: Int ->
println("lambda函数返回值为String" +
"最终拿到服务器响应的结果是:responseMsg:$responseMsg, responseCode:$responseCode")
"lambda函数返回值为String 最终拿到服务器响应的结果是:responseMsg:$responseMsg, responseCode:$responseCode"
// println("最终拿到服务器响应的结果是:responseMsg:$responseMsg, responseCode:$responseCode")
}
doLogin1("yuknight", "123456",serverResponse1)
/*----------------------------------------------------*/
val responseMsg = {
msg: String, code:Int->
println("返回结果:msg:$msg, code:$code")
}
loginApi("yuknight", "123456", responseMsg)
/*----------------------------------------------------*/
loginApi("yuknight", "123456"){
msg: String, code:Int->
println("返回结果:msg:$msg, code:$code")
}
}
//函数中定义参数是函数的函数
const val DB_SAVE_USER_NAME = "yuknight"
const val DB_SAVE_USER_PWD = "123456"
fun doLogin(userName: String, userPwd: String, serverResponse: (String, Int) -> Unit) {
if (DB_SAVE_USER_NAME == userName && DB_SAVE_USER_PWD == userPwd) {
val serverResponseResult = "恭喜,登录成功!"
serverResponse(serverResponseResult, 200)
} else {
val serverResponseResult = "对不起,登录失败!"
serverResponse(serverResponseResult, 404)
}
}
/*----------------------------------------------------*/
fun doLogin1(userName: String, userPwd: String, serverResponse: (String, Int) -> String) {
if (DB_SAVE_USER_NAME == userName && DB_SAVE_USER_PWD == userPwd) {
val serverResponseResult = "恭喜,登录成功!"
serverResponse(serverResponseResult, 200)
} else {
val serverResponseResult = "对不起,登录失败!"
serverResponse(serverResponseResult, 404)
}
}
/*----------------------------------------------------*/
fun loginApi(userName: String, userPwd: String, responseResult: (String, Int) -> Unit) {
if (userName == null || userPwd == null) {
responseResult("用户名或者密码错误", 500)
}
if (userName.length>3 &&userPwd.length>3){
if (wbeServiceLoginApi(userName, userPwd)){
responseResult("login sucess", 200)
}else{
responseResult("login fail", 444)
}
}else {
responseResult("用户名或者密码错误", 500)
}
}
private fun wbeServiceLoginApi(name:String, pwd:String):Boolean{
//Kotlin中if是表达式, java中if是语句
return name == DB_SAVE_USER_NAME && pwd == DB_SAVE_USER_PWD
}
//java 中则需要使用匿名函数以及回调的方式实现
//interface ResponseResult{
// void result(String msg, int code);
//}