【第二阶段】在函数中定义参数是函数的函数

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
}

执行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值