Scala中有Left,Right两个类,继承于Either,主要用途是表示两个可能不同的类型(它们之间没有交集),Left主要是表示Failure,Right表示有,跟Some类型有点类似。

案例:

object EitherLeftRightExample extends App {/*** A simple method to demonstrate how to declare that a method returns an Either,* and code that returns a Left or Right.*/def divideXByY(x: Int, y: Int): Either[String, Int] = {if (y == 0) Left("Dude, can't divide by 0")else Right(x / y)}// a few different ways to use Either, Left, and Rightprintln(divideXByY(1, 0))println(divideXByY(1, 1))divideXByY(1, 0) match {case Left(s) => println("Answer: " + s)case Right(i) => println("Answer: " + i)}divideXByY(1, 1) match {case Left(s) => println("Answer: " + s)case Right(i) => println("Answer: " + i)//Left(Dude, can't divide by 0)//Right(1)//Answer: Dude, can't divide by 0//Answer: 1}}

分析:调用divideXByY方法,返回的是Either[String, Int],左边的String是 Left() 内部包含的信息。

右边的Int是 Right() 内部包含的信息。

Scala中Either两个子类Left/Right相关推荐

  1. Scala中使用两种方式对单词进行次数统计(wordCount)

    使用Scala对单词数量进行统计: 假设有单词数组: val arr = Array("hello tom","hello jerry","hello ...

  2. map写法 scala语言_(转)scala中map与flatMap浅析

    在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合.由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好 ...

  3. Scala中的柯里化

    首先要区分Scala函数与方法的区别,这在Scala中是两个不同概念,只有理解了这两个概念才能理解柯里化. 方法 scala> def add(x:Int, y: Int) = x + y ad ...

  4. java类型转换答案,在java中支持两种类型的类型转换,自动类型转换和强制类型转换。父类转化为子类需要强制转换。...

    在java中支持两种类型的类型转换,自动类型转换和强制类型转换.父类转化为子类需要强制转换. 更多相关问题 计算机病毒通过()传染扩散得极快,危害最大. 当一个现象的数量由小变大,另一个现象的数量相反 ...

  5. 编写一个抽象类Shape,声明计算图形面积的抽象方法。再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法

    编写一个抽象类Shape,声明计算图形面积的抽象方法.再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法 ...

  6. 利用多态特性,编程创建一个手机类Phones,定义打电话方法call()。创建两个子类:苹果手机类IPhone和安卓手机类APhone,并在各自类中重写方法call(),编写程序入口main()方法

    利用多态特性,编程创建一个手机类Phones,定义打电话方法call().创建两个子类:苹果手机类IPhone和安卓手机类APhone,并在各自类中重写方法call(),编写程序入口main()方法, ...

  7. Scala 中的函数式编程基础

    主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 <Functional Programming Principles in Scala>. ...

  8. scala中使用Option、Some、None,避免使用null

    避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是"无",在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用任 ...

  9. Scala中那些令人头痛的符号

    Scala中符号语法糖 初学Scala看到那些稀奇古怪的符号(e.g.   <: , >: ,  <%  ,  =:= , <:< ,  <%<,  +T, ...

最新文章

  1. 最新县及县以上行政区划代码(截止2009年12月31日)
  2. spring20:Aspectj实现前置通知@Before
  3. 一个aov网用邻接矩阵表示_一起看看啥是图论算法-第一期:图的基本表示
  4. MFRC522开发笔记
  5. Vertical Menu ver4
  6. numpy如何直接在数组上进行添加_NumPy 论文登上了 Nature!
  7. 快速下载Spring官网下载dist.zip中所有jar,例如spring-5.2.10.RELEASE-dist.zip
  8. 那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)
  9. 通过url判断当前页,动态给导航加样式
  10. Redis持久化的原理及优化
  11. 三维重建:三维重建基础
  12. 老系统维护(一)[转]
  13. 平台打包整合成exe安装部署(java+mysql+tomcat+war)
  14. Chrome谷歌浏览器无法自动同步的解决办法
  15. 利用html+javascript开发桌面软件
  16. 网站赚钱秘密--SEO的运用
  17. c语言编写英雄联盟,怎么用C#或者C语言注册 英雄联盟 热键
  18. Ubuntu16.04下网易云音乐点击图标打不开——已解决
  19. VC MFC C++ MQTT VC编译MQTT VC调用MQTT dll eclipse-paho-mqtt
  20. Qt音视频开发06-海康sdk内核linux客户端

热门文章

  1. 思维导图 XMind 闯关之路(第01关)新建文件 建立分支
  2. 2019全年回顾——忙碌的一年
  3. 大学计算机李凤霞课本百度云,北京理工大学李凤霞老师个人资料
  4. 区块链行业领袖汇聚一堂,共同畅谈IEO
  5. mysql中两根竖线什么意思_五线谱中两根竖线是什么意思?
  6. 淘宝个人卖家如何进行免登声明
  7. C# 实现视频监控系统(附源码)
  8. 怎样制作一个漂亮的艺术二维码?
  9. C语言实现交换两个数
  10. iphone android短信中心号码,iPhone设置短信中心号码失败