返回介绍

数学基础

统计学习

深度学习

工具

Scala

三、Option 类型

发布于 2023-07-17 23:38:22 字数 2686 浏览 0 评论 0 收藏 0

  1. Scala 有一个名为Option 的标准类型表示可选值。这样的值可以有两种形式:

    • Some(x),其中x 就是那个实际的值。
    • None,表示没有值。
  2. Scala 的集合类中某些标准操作会返回可选值。如:ScalaMap 有一个get 方法,当传入的键有对应的值时,返回Some(value);当传入的键在Map 中没有定义时,返回None

    
    
    xxxxxxxxxx
    val map = Map("a"->1,"b"->2) println(map.get("a")) // 打印: Some(1) println(map.get("c")) // 打印: None
  3. 将可选值解开的常见方式是通过模式匹配。

    
    
    xxxxxxxxxx
    val map = Map("a"->1,"b"->2) ​ def get_option_value(x:Option[Int]) = x match{ case Some(s) => { println("get value:"+s) s } case None => { println("get None") None} } ​ get_option_value(map.get("a")) // 打印: get value:1 get_option_value(map.get("c")) // 打印: get None
  4. Scala 程序经常使用Option 类型,这个类型可以和Javanull 来表示空值来作比较。

    • Javanull 很容易出错。因为在实践中,想要跟踪程序中哪些变量为null 是一件很困难的事。

      如果某个变量允许为null,则必须记住每次使用它时都要判断是否为null 。如果忘记做判断,则很容易出现NullPointerException

      由于这一类异常可能并不是经常发生,因此在测试过程中很难发现。

    • ScalaOption 则不容易出错。

      • 采用Option 的代码更为直观。某个类型为Option[String] 的变量提示了你:该变量可能为空;而在Scala 中,类型为String 的变量提示了你:该变量一定非空。

      • 如果返回了Option 类型,则不检查是否为空的代码在Scala 中会变成类型错误,因此无法编译通过。

        
        
        xxxxxxxxxx
        val map = Map("a"->"first","b"->"second") ​ val opt_str:Option[String] = map.get("a") // 提醒你: opt_str 可能为空 val str:String = map.get("c") // 编译失败,因为 get 方法返回类型 Option[String] ​

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文