个人备案能做公司网站吗,python用于网站开发,怎么做网站淘宝转换工具,wordpress 登录评论2. Option类型
2.1 概述
实际开发中, 在返回一些数据时, 难免会遇到空指针异常(NullPointerException), 遇到一次就处理一次相对来讲还是 比较繁琐的. 在Scala中, 我们返回某些数据时#xff0c;可以返回一个Option类型的对象来封装具体的数据#xff0c;从而实现有效 的避…2. Option类型
2.1 概述
实际开发中, 在返回一些数据时, 难免会遇到空指针异常(NullPointerException), 遇到一次就处理一次相对来讲还是 比较繁琐的. 在Scala中, 我们返回某些数据时可以返回一个Option类型的对象来封装具体的数据从而实现有效 的避免空指针异常。
2.2 格式
Scala中Option类型表示可选值。这种类型的数据有两种形式
Some(x)表示实际的值 final case class Some[A](x:A) extends Option[A]{def isEmpty: Boolean falsedef get: A x}None表示没有值
case object None extends Option[Nothing]{def isEmpty: Boolean truedef get: Nothing throw new NoSuchElementException(None.get)
}注意: 使用getOrElse方法当值为None时可以指定一个默认值.
2.3 示例
需求 定义一个两个数相除的方法使用Option类型来封装结果 打印结果
不是除零打印结果除零, 则打印异常错误
参考代码
//案例:演示Option类型
object ClassDemo10{//1.定义一个两个数相除的方法使用Option类型来封装结果 defdiv(a:Int,b:Int){if(b0){None //除数为0,没有结果.}else{Some(a/b)//除数不为0,返回具体的结果.}}def main(args:Array[String]):Unit{//2.然后使用模式匹配来打印结果val resultdiv(10,0)//思路一:通过模式匹配来打印结果.result match{//不是除零打印结果case Some(x)println(x)//除零打印异常错误case Noneprintln(除数不能为0)}println(-*15)//思路二:采用getOrElse()方法实现. println(result.getOrElse(0))}
}3. 偏函数
3.1 定义
偏函数提供了更简洁的语法可以简化函数的定义。配合集合的函数式编程可以让代码更加优雅。 所谓的偏函数是指被包在花括号内没有match的一组case语句, 偏函数是PartialFunction[A, B]类型的的一个实例对象, 其中A代表输入参数类型, B代表返回结果类型.
3.2 格式
val 对象名{//这对大括号及其内部的一组case语句,就组成了一个偏函数.case 值1表达式1 case 值2表达式2case 值3表达式3...
}3.3 示例一: 入门案例
需求
定义一个偏函数根据以下方式返回
输入返回值1一2二3三其他其他
参考代码
//案例:演示偏函数
object ClassDemo11{def main(args:Array[String]):Unit{//1.定义一个偏函数,根据指定格式返回val pf:PartialFunction[Int,String]{case1一case2二case3三case_其他}//2.调用方法println(pf(1)) println(pf(2)) println(pf(3)) println(pf(4))}
}3.4 示例二:结合map函数使用
需求
定义一个列表包含1-10的数字请将1-3的数字都转换为[1-3]请将4-8的数字都转换为[4-8]将其他的数字转换为(8-*]打印结果.
参考代码
//案例:偏函数使用,结合map函数
object ClassDemo12{def main(args:Array[String]):Unit{//1.定义一个列表包含1-10的数字val list1(1to10).toList//核心:通过偏函数结合map使用,来进行模式匹配 val list2list1.map{//2.请将1-3的数字都转换为[1-3]case xifx1x3[1-3]//3请将4-8的数字都转换为[4-8]case xifx4x8[4-8] //4将其他的数字转换为(8-*]case _ (8-*]}//5.打印结果.println(list2)}
}