【第二階段】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.pswp.cn/news/39927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39927.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39927.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DRF 緩存

應用環境 django4.2.3 ,python3.10 由于對于服務而言,有些數據查詢起來比較費時,所以,對于有些數據,我們需要將其緩存。 最近做了一個服務,用的時 DRF 的架構,剛好涉及緩存,特此記…

webSocket 筆記

1 認識webSocket WebSocket_ohana!的博客-CSDN博客 一,什么是websocket WebSocket是HTML5下一種新的協議(websocket協議本質上是一個基于tcp的協議)它實現了瀏覽器與服務器全雙工通信,能更好的節省服務器資源和帶寬…

centos 7.9 部署django項目

1、部署框架 主要組件:nginx、uwsgi、django項目 訪問頁面流程:nginx---》uwsgi---》django---》uwsgi---》nginx 2、部署過程 操作系統:centos 7.9 配置信息:4核4G 50G 內網 eip :10.241.103.216 部署過程&…

深入學習SpringCloud Alibaba微服務架構,揭秘Nacos、Sentinel、Seata等核心技術,助力構建高效系統!

課程鏈接: 鏈接: https://pan.baidu.com/s/1hRN0R8VFcwjyCTWCEsz-8Q?pwdj6ej 提取碼: j6ej 復制這段內容后打開百度網盤手機App,操作更方便哦 --來自百度網盤超級會員v4的分享 課程介紹: 📚【第01階段】課程簡介:全…

Android FrameWork 層 Handler源碼解析

Handler生產者-消費者模型 在android開發中,經常會在子線程中進行一些耗時操作,當操作完畢后會通過handler發送一些數據給主線程,通知主線程做相應的操作。 其中:子線程、handler、主線程,其實構成了線程模型中經典的…

STM32存儲左右互搏 I2C總線FATS讀寫EEPROM ZD24C1MA

STM32存儲左右互搏 I2C總線FATS讀寫EEPROM ZD24C1MA 在較低容量存儲領域,EEPROM是常用的存儲介質,可以通過直接或者文件操作方式進行讀寫。不同容量的EEPROM的地址對應位數不同,在發送字節的格式上有所區別。EEPROM是非快速訪問存儲&#xf…

vue2+Spring Boot2.7 大文件分片上傳

之前我們文章 手把手帶大家實現 vue2Spring Boot2.7 文件上傳功能 將了上傳文件 但如果文件很大 就不太好處理了 按正常情況甚至因為超量而報錯 這里 我弄了個足夠大的文件 我們先搭建 Spring Boot2.7 環境 首先 application.yml 代碼編寫如下 server:port: 80 upload:path:…

【佳佳怪文獻分享】使用點云從半監督到全監督房間布局估計

標題:From Semi-supervised to Omni-supervised Room Layout Estimation Using Point Cloud 作者:Huan-ang Gao, Beiwen Tian, Pengfei Li, Xiaoxue Chen, Hao Zhao, Guyue Zhou , Yurong Chen and Hongbin Zha 來源:2023 IEEE Internation…

根據源碼,模擬實現 RabbitMQ - 通過 SQLite + MyBatis 設計數據庫(2)

目錄 一、數據庫設計 1.1、數據庫選擇 1.2、環境配置 1.3、建庫建表接口實現 1.4、封裝數據庫操作 1.5、針對 DataBaseManager 進行單元測試 一、數據庫設計 1.1、數據庫選擇 MySQL 是我們最熟悉的數據庫,但是這里我們選擇使用 SQLite,原因如下&am…

手機出現 不讀卡 / 無信號時應該怎么辦?

當手機屏幕亮起,一般在屏幕最上方都會有代表手機卡狀態的顯示,其中網絡信號和讀卡狀態的標識,依舊有很多人分不太清,更不清楚改怎么辦了。 1、當我們的手機里有兩張卡時,則會有兩個信號顯示 2、信號狀態一般是由短到…

CSS自己實現一個步驟條

前言 步驟條是一種用于引導用戶按照特定流程完成任務的導航條,在各種分步表單交互場景中廣泛應用。例如:在HIS系統-門診醫生站中的接診場景中,我們就可以使用步驟條來實現。她的執行步驟分別是:門診病歷>遺囑錄入>完成接診…

ArcGIS Pro基礎入門、制圖、空間分析、影像分析、三維建模、空間統計分析與建模、python融合、案例全流程科研能力提升

目錄 第一章 入門篇 GIS理論及ArcGIS Pro基礎 第二章 基礎篇 ArcGIS數據管理與轉換 第三章 數據編輯與查詢、拓撲檢查 第四章 制圖篇 地圖符號與版面設計 第五章 空間分析篇 ArcGIS矢量空間分析及應用 第六章 ArcGIS柵格空間分析及應用 第七章 影像篇 遙感影像處理 第八…

Python random模塊用法整理

隨機數在計算機科學領域扮演著重要的角色,用于模擬真實世界的隨機性、數據生成、密碼學等多個領域。Python 中的 random 模塊提供了豐富的隨機數生成功能,本文整理了 random 模塊的使用。 文章目錄 Python random 模塊注意事項Python random 模塊的內置…

大語言模型控制生成的過程Trick:自定義LogitsProcessor實踐

前言 在大模型的生成過程中,部分原生的大語言模型未經過特殊的對齊訓練,往往會“胡說八道”的生成一些敏感詞語等用戶不想生成的詞語,最簡單粗暴的方式就是在大模型生成的文本之后,添加敏感詞庫等規則手段進行敏感詞過濾&#xf…

30行JS代碼帶你手寫自動回復語音聊天機器人

🥂(???)您的點贊👍?評論📝?收藏?是作者創作的最大動力🤞 前言 現如今生活中到處都是聊天機器人的身影,聊天機器人不僅僅能減少人工的聊天壓力,而且十分的可愛有趣,安卓系統的小AI&#xf…

Springboot整合Mybatis調用Oracle存儲過程

1、配置說明 Oracel11g+springboot2.7.14+mybatis3.5.13 目標:springboot整合mybatis訪問oracle中的存儲過程,存儲過程返回游標信息。 mybatis調用oracle中的存儲過程方式 2、工程結構 3、具體實現 3.1、在Oracle中創建測試數據庫表 具體數據可自行添加 create table s…

Lodash——使用與實例

1. 簡介 Lodash是一個一致性、模塊化、高性能的JavaScript實用庫。Lodash通過降低array、number、objects、string等等的使用難度從而讓JavaScript變得簡單。Lodash的模塊方法,非常適用于: 遍歷array、object 和 string對值進行操作和檢測創建符合功能的…

字符個數統計(同類型只統計一次)

思路:因為題目圈定出現的字符都是 ascii 值小于等于127的字符,因此只需要定義一個標記數組大小為128 ,然后將字符作為數組下標在數組中進行標記,若數組中沒有標記過表示第一次出現,進行計數,否則表示重復字…

簡單線性回歸:預測事物間簡單關系的利器

文章目錄 🍀簡介🍀什么是簡單線性回歸?🍀簡單線性回歸的應用場景使用步驟:注意事項: 🍀代碼演示🍀結論 🍀簡介 在數據科學領域,線性回歸是一種基本而強大的統…

Kali Linux助您網絡安全攻防實戰

Kali Linux:黑客與防御者的神器 Kali Linux是一款專為網絡安全測試和攻防實踐而設計的操作系統。它匯集了大量的安全工具,可以用于滲透測試、漏洞掃描、密碼破解等任務,不僅為黑客提供了強大的攻擊能力,也為安全防御者提供了測試和…