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 } 这是除非你想管理例外。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |