gpt4 book ai didi

scala - 字符串模式匹配最佳实践

转载 作者:行者123 更新时间:2023-12-03 10:10:22 24 4
gpt4 key购买 nike

以下是不起作用的代码,但它描述了我想要做的事情。

您能否推荐解决此问题的最佳方法?

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"

这只是绑定(bind)值 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
}

除非你想管理异常。

关于scala - 字符串模式匹配最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com