3

我有以下与完全限定的 Microsoft SQL Server 表名 ( ) 匹配的正则表达式模式[dbName].[schemaName].[tableName],其中架构名称是可选的:

val tableNamePattern = """\[(\w+)\](?:\.\[(\w+)\])?\.\[(\w+)\]""".r

我这样使用它:

val tableNamePattern(database, schema, tableName) = fullyQualifiedTableName

当模式名称丢失时(例如:)[dbName].[tableName],该schema值被设置为null

是否有一种 Scala 惯用的方式来设置它None,以及Some(schema)何时提供 schemaName?

有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。——杰米·扎温斯基

4

1 回答 1

2

我将从链接问题的已接受答案中复制代码,并且也不给予信用。这里是:

object Optional {
  def unapply[T](a: T) = if (null == a) Some(None) else Some(Some(a))
}

val tableNamePattern(database, Optional(schema), tablename) = fullyQualifiedTableName

PS:我今天在推特上想知道创建特殊情况提取器是否像他们建议的那样普遍。:)

于 2013-09-13T20:24:14.500 回答