一、总述
在《Scala编程之样本类与模式匹配》的文章中,鄙人以一个实例介绍了样本类与模式匹配,本篇介绍一个更有趣的东西:Option。
Scala为可选值提供了一个标准类型:Option。这种类型有两个值:Some(x)和None,其中x表示实际值,而None对象代表缺省值。
下面通过编写一个简单的实例实现两种功能:Option类型的两种值;解析Option类型两种值中所对应的实际值。
二、实例展示
定义一个object,其名为OptionClass。
/** * Created by user on 2016/1/21. */ object OptionClass { def paramConver(key: String): Option[String] = { val paramMap = Map("Beijing" -> "China","NewYork" -> "America", "Pairs" -> "France","Tokyo" -> "Japan") paramMap get(key) } def show(x: Option[String]) = x match { case Some(s) => s case None => "I do not know my country" } def main(args: Array[String]) { val value1 = paramConver("Beijing") println("Option one form: " + value1) val value2 = paramConver("Shanghai") println("Option another form: " + value2) val value3 = show(paramConver("NewYork")) println("Option resolve Some(x) form and x: " + value3) val value4 = show(paramConver("Nanjing")) println("Option resolve None form and that value: " + value4) } }
三、测试结果
Option one form: Some(China)
Option another form: None
Option resolve Some(x) form and x: America
Option resolve None form and that value: I do not know my country
四、后记
如果有兴趣的朋友,可以根据自己的需要来编写属于自己的程序,从而达到对Scala中Option类型的理解。
相关推荐
2 scala很多库在设计的时候,不理解原因,包括Option,Collection的很多看似有冗余的地方 3 很多scala的默认写法,不理解 4 多态的具体化,尤其是协变的意义所在 5 各种重载的符号使用 之前读过 programming in...
Scala中集合的使用 大学生 1. List 列表的使用 2. Set 集合的使用 3.Map 映射的使用 4. 元组的使用
6.2 Scala中的函数式编程 151 6.2.1 匿名函数、Lambda与闭包 152 6.2.2 内部与外部的纯粹性 154 6.3 递归 154 6.4 尾部调用和尾部调用优化 155 6.5 偏应用函数与偏函数 157 6.6 Curry化与函数的...
该项目包含一些教程和练习,供开发人员使用 Scala/函数式编程和 Play 框架。 这些练习涵盖了日常 Scala 编程的一些核心方面,包括以下概念: Future Option Either/Left/Right Some None match/case map/...
any_option是一个简单的库,类型多样,可通过Dart中的函数式编程样式轻松安全地进行错误处理。 它旨在使扑扑/Dart开发人员可以使用两种最受欢迎的模式和抽象: Either和Option ,主要用于FP语言,例如Scala,...
Hibernate,Guice和Scala玩 更新为使用Guice和Hibernate 5播放2.4.2... 同时,我找到了一种使Hibernate与scala的Option类型和scala访问器方法一起工作的好方法。 我写了一篇,其中更详细地说明了我要对该项目进行的操
这个库的灵感来自 java8 流框架、guava FluentIterable 和 Scala 功能特性。 为了充分享受这个库,欢迎了解基本的功能模式。 总结和主要特点: 允许使用数组和所有实现Traversable接口的东西 基于函数式编程概念...
成为编程世界的MacGyver! 发现map,flatMap和filter的可能性,它们全都以最佳的语法理解能力提供。 在研讨会期间,您将学习如何将其与List,Option,Try,Future和Either类型结合使用。 我将介绍标准技术和潜在的...
在面向对象和函数式编程中,不可变对象是指在创建后状态无法修改的对象。 这与可以在创建后修改的可变对象形成对比。 类应该是不可变的,除非有很好的理由让它们可变。 如果一个类不能成为不可变的,就尽可能地限制...
您将获得doobie提供的所有有原则的函数编程,以及一层额外的可组合性和简洁性。 例子 import doobie . imports . _ import blunt . _ val xa = DriverManagerTransactor [ IOLite ]( // Set up your doobie ...
当然,首先你需要在自己电脑上安装spark环境,简单说下,在这里下载spark,同时需要配置好JAVA,Scala环境。 这里建议使用Jupyter notebook,会比较方便,在环境变量中这样设置 PYSPARK_DRIVER_PYTHON=jupyter ...