当前位置: 首页 > news >正文

【第二阶段】kotlin函数引用

针对上篇传入函数参数我们也可以重新定义一个函数,然后在main中调用时传入函数对象
lambda属于函数类型的对象,需要把普通函数变成函数类型的对象(函数引用),使用“::”

/*** You can edit, run, and share this code.* play.kotlinlang.org*/
fun main() {//第一种写法 使用“::”函数引用val info=login("kotlin","123456",::meResponseResult)println(info)//第二种写法 对象引用的函数引用val obj=::meResponseResultval info2=login("kotlin","123456",obj)println(info2)
}//定义函数实现responseResult:(String,Int)->String):String
fun meResponseResult(msg:String,code:Int):String{return "登录结果:$msg,$code"
}//模拟数据库SQLServer
const val USER_NAME_DB="kotlin"
const val USER_PWD_DB="123456"//登录
/** responseResult:(String,Int)->Unit) 传入响应结果的参数,同时也是获取响应结果的函数* *  TODO()//Nothing类型,出现问题,终止程序** */
private inline 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
}

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

http://www.lryc.cn/news/128497.html

相关文章:

  • sip网络号角喇叭 sip音柱 POE供电广播音箱 ip网络防水对讲终端 sip网络功放
  • 【网络】传输层——TCP(滑动窗口流量控制拥塞控制延迟应答捎带应答)
  • Electron教程_编程入门自学教程_菜鸟教程-免费教程分享
  • LVS负载均衡DR(直接路由)模式
  • 14 anaconda+pycharm环境管理以及源管理
  • 【C语言程序设计】C语言基本数据类型与表达式(思考题)
  • Linux 网络发包流程
  • Python web实战之Django的AJAX支持详解
  • spring boot实现实体类参数自定义校验
  • 网络安全威胁与防御策略
  • C++:哈希表——模拟散列表
  • 项目配置中心介绍
  • 14-案例:购物车
  • 上海市青少年算法2023年2月月赛(丙组)
  • jetpack5.0.2 已经安装了 cudnn 和 tensorrt
  • 我的编程语言学习笔记
  • 一个DW的计算
  • java.net.BindException Address already in use: NET_Bind解决
  • JMM内存模型之happens-before阐述
  • 大数据课程I2——Kafka的架构
  • vscode如何汉化
  • matlab保存图片
  • 产业园区数字孪生3d可视化全景展示方案
  • centos7 jupyter notebook 安装自动补全插件
  • 【算法——双指针】LeetCode 202 快乐数
  • AndroidManifest清单文件中,Activity的screenOrientation属性详解
  • Qt+Pyhton实现麒麟V10系统下word文档读写功能
  • TCP/IP 下的计算机网络江湖
  • 智能家居(4)---火灾报警线程封装
  • C#语音播报问题之 无法嵌入互操作类型SpVoiceClass,请改用适用的窗口