- Scala Programming Projects
- Mikael Valot Nicolas Jorand
- 233字
- 2021-07-23 16:25:26
Using Either
The Either type is an ADT that represents a value of either a Left type or a Right type. A simplified definition of Either would be the following:
sealed trait Either[A, B]
case class Left[A, B](value: A) extends Either[A, B]
case class Right[A, B](value: B) extends Either[A, B]
When you instantiate a Right type, you need to provide a value of a B type, and when you instantiate a Left type, you need to provide a value of an A type. Therefore, Either[A, B] can either hold a value of type A or a value of type B.
The following code shows an example of such a usage that you can type in a new Scala worksheet:
def divide(x: Double, y: Double): Either[String, Double] =
if (y == 0)
Left(s"$x cannot be divided by zero")
else
Right(x / y)
divide(6, 3)
// res0: Either[String,Double] = Right(2.0)
divide(6, 0)
// res1: Either[String,Double] = Left(6.0 cannot be divided by zero)
The divide function returns either a string or a double:
- If the function cannot compute a value, it returns an error String wrapped in a Left type
- If the function can compute a correct value, it returns the Double value wrapped in a Right type
By convention, we use Right to represent the correct or right value, and we use Left to represent an error.
推薦閱讀
- Web安全防護(hù)指南:基礎(chǔ)篇
- Aptana Studio Beginner's Guide
- EDA技術(shù)與VHDL編程
- 物聯(lián)網(wǎng)識(shí)別技術(shù)
- 物聯(lián)網(wǎng)檢驗(yàn)檢測(cè)技術(shù)
- 物聯(lián)網(wǎng)關(guān)鍵技術(shù)及應(yīng)用
- 計(jì)算機(jī)網(wǎng)絡(luò)與數(shù)據(jù)通信
- 信息通信網(wǎng)絡(luò)建設(shè)安全管理概要2
- Spring Cloud微服務(wù)架構(gòu)進(jìn)階
- 區(qū)塊鏈輕松上手:原理、源碼、搭建與應(yīng)用
- Mastering Dart
- Android UI Design
- 物聯(lián)網(wǎng)工程導(dǎo)論(第3版)
- 設(shè)備監(jiān)控技術(shù)詳解
- LwIP應(yīng)用開發(fā)實(shí)戰(zhàn)指南:基于STM32