Option Map2

package option

object Map2 {

  def map2[A, B, C](a: Option[A], b: Option[B])(f: (A, B) => C): Option[C] = a flatMap (a1 => b map (b1 => f(a1, b1)))

  def main(args: Array[String]): Unit = {
    val add = (a: Int, b: Int) => a + b
    println(map2(Some(1), Some(2))(add))
    println(map2(Some(1), None)(add))
    println(map2(None, None)(add))
    println(map2(None, Some(2))(add))
  }
}
Some(3)
None
None
None
时间: 2024-08-02 08:26:19

Option Map2的相关文章

泛函编程(9)-异常处理-Option

Option是一种新的数据类型.形象的来描述:Option就是一种特殊的List,都是把数据放在一个管子里:然后在管子内部对数据进行各种操作.所以Option的数据操作与List很相似.不同的是Option的管子内最多只能存放一个元素,在这个方面Option的数据操作就比List简单的多,因为使用者不必理会数据元素的位置.顺序.Option只有两种状态:包含一个任何类型的元素或者为空.或者这样讲:一个Option实例包含 0 或 1 个元素:None代表为空,Some(x)代表包含一个任意类型的

Option Traverse

package option object Traverse { def traverse[A, B](a: List[A])(f: A => Option[B]): Option[List[B]] = a match { case Nil => Some(Nil) case h :: t => Map2.map2(f(h), traverse(t)(f))(_ :: _) } def main(args: Array[String]): Unit = { val l = List(1,

使用原生JavaScript实现对select增加option标签并附加value属性

好久没有写原生的东西了,今天写了一个小项目里面包含着option选项,所以我决定使用原生JavaScript动态生成, 本着互联网分享精神,我将本篇文章分享给大家. html代码(就是一个select) <select name="" id="reg-select"></select> json数据 var json = [ { "cc": "86", "code": "C

scala学习手记19 - Option类型

看到Option类型就知道这本教材应该要说那个了. 使用过guava后,应该知道guava中的Optional类的作用是什么.算了找下原始文档好了: Optional<T> is a way of replacing a nullable T reference with a non-null value. An Optional may either contain a non-null T reference (in which case we say the reference is &

数据库升级问题—ORA-39700: database must be opened with UPGRADE option

1. 错误描述 一个数据较长时间未使用了,最近启动时出现如下错误: SQL> startup Oracle instance started. Total System Global Area 4932501504 bytes Fixed Size                  2103096 bytes Variable Size            889194696 bytes Database Buffers        4026531840 bytes Redo Buffers

内核中拦截DHCP discover包 并塞入option 60 字段

网络拓扑 DHCP服务器 ======== 你的笔记本电脑 ======== 你的手机 你的笔记本安装2.6内核版本的Linux发行版. 以上网络架设好,笔记本的网口从DHCP服务器要到IP,可以进行上网. 笔记本的无线网卡设定为AP模式,可以让你的手机连上,你的手机也要能上网. 你的手机要能从DHCP服务器直接获取IP,并且,你的手机发出的 DHCP的 discover封包经过你的笔记本的时候,你的笔记本要在封包中塞入option60这个字段(值任意). 实验环境:Linux 2.6.31 o

【jq】JQuery对select option的操作

下拉框 <select id="selectID"> <option vlaue="1">1</option> <option vlaue="2">2</option> <option vlaue="3">3</option> </select> jq针对下拉框的基本操作有 //选择更改事件 $("#selectID&qu

select option 转

//遍历option和添加.移除optionfunction changeShipMethod(shipping){ var len = $("select[@name=ISHIPTYPE] option").length if(shipping.value != "CA"){  $("select[@name=ISHIPTYPE] option").each(function(){   if($(this).val() == 111){   

关于T-SQL重编译那点事,WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译吗

本文出处:http://www.cnblogs.com/wy123/p/6262800.html   在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译. 之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不