Scala 选项

Scala Option[T]是由给定类型的零或一个元素的一种容器。Option[T]可以是 Some [T]None对象,它代表缺少的值。 例如,如果已找到与给定键对应的值,则Scala的Map的get方法会生成Some(value),如果在Map中未定义给定的键,则将返回None

Option类型在Scala程序中经常使用,可以将其与Java中可用的null值进行比较,表示null值。 例如,java.util.HashMapget方法返回存储在HashMap中的值,如果没有找到值,则返回null

假设我们有一种基于主键从数据库中检索记录的方法。

def findPerson(key: Int): Option[Person]

如果找到记录,该方法将返回Some [Person],如果没有找到该记录,则返回None。下面来看看看以下程序代码 -

示例

object Demo {
   def main(args: Array[String]) {
      val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")

      println("capitals.get( \"France\" ) : " +  capitals.get( "France" ))
      println("capitals.get( \"India\" ) : " +  capitals.get( "India" ))
   }
}

将上述程序保存在源文件:Demo.scala中,使用以下命令编译和执行此程序。

D:\>scalac Demo.scala
D:\>scala Demo
capitals.get( "France" ) : Some(Paris)
capitals.get( "India" ) : None

将可选值分开的最常见方法是通过模式匹配。例如尝试以下程序 -

object Demo {
   def main(args: Array[String]) {
      val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")

      println("show(capitals.get( \"Japan\")) : " + show(capitals.get( "Japan")) )
      println("show(capitals.get( \"India\")) : " + show(capitals.get( "India")) )
   }

   def show(x: Option[String]) = x match {
      case Some(s) => s
      case None => "?"
   }
}

将上述程序保存在源文件:Demo.scala中,使用以下命令编译和执行此程序。

D:\>scalac Demo.scala
D:\>scala Demo
show(capitals.get( "Japan")) : Tokyo
show(capitals.get( "India")) : ?

 

 

使用getOrElse()方法

以下是示例程序,显示如何在没有值的情况下使用getOrElse()方法来访问值或默认值。

object Demo {
   def main(args: Array[String]) {
      val a:Option[Int] = Some(5)
      val b:Option[Int] = None 

      println("a.getOrElse(0): " + a.getOrElse(0) )
      println("b.getOrElse(10): " + b.getOrElse(10) )
   }
}

将上述程序保存在源文件:Demo.scala中,使用以下命令编译和执行此程序。

D:\>scalac Demo.scala
D:\>scala Demo
a.getOrElse(0): 5
b.getOrElse(10): 10

 

 

使用isEmpty()方法

以下是显示如何使用isEmpty()方法检查该选项是否为None的示例程序。

object Demo {
   def main(args: Array[String]) {
      val a:Option[Int] = Some(5)
      val b:Option[Int] = None 

      println("a.isEmpty: " + a.isEmpty )
      println("b.isEmpty: " + b.isEmpty )
   }
}

将上述程序保存在源文件:Demo.scala中,使用以下命令编译和执行此程序。

D:\>scalac Demo.scala
D:\>scala Demo
a.isEmpty: false
b.isEmpty: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值