Scala中的Either的用法

在 Scala 中,Either 是一種表示兩種可能值的數據類型。它可以用來處理函數可能返回的兩種不同類型的結果,通常用于錯誤處理或者結果分支情況。Either 有兩個子類:Left 和 Right,其中 Left 通常用于表示錯誤或異常情況,而 Right 用于表示正常的結果

下面是一個使用 Either 模擬承載當校驗結果可能出現多個錯誤的情況時,如何來處理這些情況。以下使用 Either 處理多個錯誤場景的示例:

package eithercase class User( username: String, password:String)object LeftRightTest {def main(args: Array[String]): Unit = {val user1=User("admin","123")login(user1) match {case Left(error)=> println(s"valid error: $error")case Right(user)=> println(s"valid ok: $user")}}def login(user:User):Either[String, User]={if(user.username.isEmpty){Left("username is empty")}else if(user.password.isEmpty){Left("password is empty")}else if(user.username!="admin"){Left("username name is not admin")}else{Right(user)}}}

注意:Either[String, User],左邊的值類型代表出現異常時的返回數據類型,右邊是正常情況下的返回值類型

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42273.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42273.shtml

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

相關文章

1.物聯網LWIP網絡,TCP/IP協議簇

一。TCP/IP協議簇 1.應用層:FTP,HTTP,Telent,DNS,RIP 2.傳輸層:TCP,UDP 3.網絡層:IPV4,IPV6,OSPF,EIGRP 4.數據鏈路層:Ethernet&#…

YOLOv5改進系列(21)——替換主干網絡之RepViT(清華 ICCV 2023|最新開源移動端ViT)

【YOLOv5改進系列】前期回顧: YOLOv5改進系列(0)——重要性能指標與訓練結果評價及分析 YOLOv5改進系列(1)——添加SE注意力機制 YOLOv5改進系列(2

兩階段提交:詳解數據庫宕機引起的主從不一致問題、redolog與binlog的兩階段提交

0、基礎知識and問題 從基礎上我們了解: (1)redolog作為數據庫保證持久化的日志,在update事務提交后就會按一定的策略刷入磁盤中,在刷入后,即使數據庫斷電宕機,mysql也能從redolog中恢復數據到磁…

Matplotlib數據可視化(六)

目錄 1.繪制概率圖 2.繪制雷達圖 3.繪制流向圖 4.繪制極坐標圖 5.繪制詞云圖 1.繪制概率圖 from scipy.stats import norm fig,ax plt.subplots() plt.rcParams[font.family] [SimHei] np.random.seed() mu 100 sigma 15 x musigma*np.random.randn(437) num_bins …

【騰訊云 Cloud Studio 實戰訓練營】在線 IDE 編寫 canvas 轉換黑白風格頭像

關于 Cloud Studio Cloud Studio 是基于瀏覽器的集成式開發環境(IDE),為開發者提供了一個永不間斷的云端工作站。用戶在使用Cloud Studio 時無需安裝,隨時隨地打開瀏覽器就能在線編程。 Cloud Studio 作為在線IDE,包含代碼高亮、自動補全、Gi…

winform 設置畫刷半透明

使用solidBrush新建畫刷,定義畫刷的顏色為透明色 Brush b new SolidBrush(Color.FromArgb(50, Color.Green)); 這里的50是透明度的設置,范圍從0-255; 0:無顏色 255:不透明 轉:c# 設置Brush 畫刷 透明_solidcolorbrush 透明色_…

git-fatal: No url found for submodule path ‘packages/libary‘ in .gitmodules

文章目錄 前言一、git submodule功能使用二、錯誤信息:三、解決方法:四、.gitmodules配置文件:總結 前言 最近在做vue項目,因為項目比較復雜,把功能拆分成很多子模塊,我們使用Git的submodule功能。遇到錯誤…

使用libvncserver庫快速搭建VNC服務端

文章目錄 VNC是什么libvncserver的優點和缺點構建libvncserver使用libvncserver搭建VNCServerX11模擬鼠標鍵盤操作libvncserver中處理鼠標鍵盤消息 VNC是什么 VNC(Virtual Network Computing)是一種使用遠程幀緩沖協議(RFB)的屏幕分享及遠程操作軟件。VNC的服務端可以通過RFP協…

Linux開機啟動程序添加root權限

Linux添加開機啟動程序 Debain、Ubuntu系列Linux開機之后會執行/etc/rc.local文件中的命令,所以,如果是想添加登陸用戶所具有權限的操作,可以在文件中exit 0之前添加開機自動執行的腳本命令。或者將執行腳本的權限修改為當前登錄用戶具有執行…

基于R語言APSIM模型進階應用與參數優化、批量模擬

隨著數字農業和智慧農業的發展,基于過程的農業生產系統模型在模擬作物對氣候變化的響應與適應、農田管理優化、作物品種和株型篩選、農田固碳和溫室氣體排放等領域扮演著越來越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…

moodle單點登陸

在moodle/login添加sso.php <?phprequire(../config.php); require_once(lib.php);if($_SERVER[REQUEST_METHOD]==GET){$tokenId=$_GET[tokenId]; }else{$tokenId="fail";

C++新經典03--共用體、枚舉類型與typedef

共用體 共用體&#xff0c;也叫聯合&#xff0c;有時候需要把幾種不同類型的變量存放到同一段內存單元&#xff0c;例如&#xff0c;把一個整型變量、一個字符型變量、一個字符數組放在同一個地址開始的內存單元中。這三個變量在內存中占的字節數不同&#xff0c;但它們都從同…

idea 轉換為 Maven Project 的方法

選項&#xff1a; Add as Maven Project

通過TightVNC遠程訪問MacOS

目錄 一、下載 TightVNC 下載鏈接&#xff1a;https://www.tightvnc.com/ 下載后按步驟進行安裝&#xff0c;安裝完成后安裝目錄如下&#xff1a; 運行 tvnviewer.exe&#xff0c;輸入遠程 IP&#xff0c;點擊【connect】&#xff1a; 輸入密碼&#xff0c;點擊【OK】后即可遠…

Matlab中圖例的位置(圖例放在圖的上方、下方、左方、右方、圖外面)等

一、圖例默認位置 默認的位置在NorthEast r 10; a 0; b 0; t0:0.1:2.1*pi; xar*cos(t); ybr*sin(t); A1plot(x,y,r,linewidth,4);%圓 hold on axis equal A2plot([0 0],[1 10],b,linewidth,4);%直線 legend([A1,A2],圓形,line)二、通過Location對legend的位置進行改變 變…

企業電子招投標采購系統源碼之電子招投標的組成 tbms

? 功能模塊&#xff1a; 待辦消息&#xff0c;招標公告&#xff0c;中標公告&#xff0c;信息發布 描述&#xff1a; 全過程數字化采購管理&#xff0c;打造從供應商管理到采購招投標、采購合同、采購執行的全過程數字化管理。通供應商門戶具備內外協同的能力&#xff0c;為…

設計模式-觀察者模式(觀察者模式的需求衍變過程詳解,關于監聽的理解)

目錄 前言概念你有過這樣的問題嗎&#xff1f; 詳細介紹原理&#xff1a;應用場景&#xff1a; 實現方式&#xff1a;類圖代碼 問題回答監聽&#xff0c;為什么叫監聽&#xff0c;具體代碼是哪觀察者模式的需求衍變過程觀察者是為什么是行為型 總結&#xff1a; 前言 在軟件設計…

【C++類和對象】類有哪些默認成員函數呢?(下)

文章目錄 一、類的6個默認成員函數二、日期類的實現2.1 運算符重載部分2.2 日期之間的運算2.3 整體代碼1.Date.h部分2. Date.cpp部分 三. const成員函數四. 取地址及const取地址操作符重載擴展內容 總結 ヾ(????)&#xff89;" 人總要為過去的懶惰而付出代價ヾ(???…

2011年下半年 軟件設計師 上午試卷2

博主介紹&#xff1a;?全網粉絲3W&#xff0c;全棧開發工程師&#xff0c;從事多年軟件開發&#xff0c;在大廠呆過。持有軟件中級、六級等證書。可提供微服務項目搭建與畢業項目實戰&#xff0c;博主也曾寫過優秀論文&#xff0c;查重率極低&#xff0c;在這方面有豐富的經驗…

如何為你的表單添加一個反選功能

原始代碼 無標題文檔 <form id"form1" name"form1" method"post" action""><table width"50%" border"1" cellspacing"0" cellpadding"0"><tr><td bgcolor"#9999…