加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala字符串模式匹配最佳做法

发布时间:2020-12-16 09:36:08 所属栏目:安全 来源:网络整理
导读:我目前正在Scala进行第一步,所以我正在寻找解决常见问题的最佳做法。以下是代码不起作用,但它描述了我想做什么。可以请你推荐最好的方法来解决这个问题吗? def resolveDriver(url: String) = { url match { case url.startsWith("jdbc:mysql:") = "com.my
我目前正在Scala进行第一步,所以我正在寻找解决常见问题的最佳做法。以下是代码不起作用,但它描述了我想做什么。可以请你推荐最好的方法来解决这个问题吗?

def resolveDriver(url: String) = {
    url match {
      case url.startsWith("jdbc:mysql:") => "com.mysql.jdbc.Driver"
      case url.startsWith("jdbc:postgresql:") => "org.postgresql.Driver"
      case url.startsWith("jdbc:h2:") => "org.h2.Driver"
      case url.startsWith("jdbc:hsqldb:") => "org.hsqldb.jdbcDriver"
      case _ => throw new IllegalArgumentException
    }
  }

解决方法

在语法方面,你可以修改一下你的case语句:

case url if url.startsWith("jdbc:mysql:") => "com.mysql.jdbc.Driver"

这只是将值url绑定到模式表达式(也是url),并添加一个带有测试的守护表达式。这应该使代码编译。

为了使它更像scala,您可以返回一个Option [String](我删除了一个条款,因为它只是为了说明):

def resolveDriver(url: String) = url match {
  case u if u.startsWith("jdbc:mysql:") => Some("com.mysql.jdbc.Driver")
  case u if u.startsWith("jdbc:postgresql:") => Some("org.postgresql.Driver")
  case _ => None
}

这是除非你想管理例外。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读