Estoy escribiendo un generador de código Java.Opción Scala [(A, B)] coincidencia de patrón
que tienen un mapa inmutable que contiene un mapeo de java.sql.Types
[Int] a una tupla de (String, String)
donde el primer valor es un tipo Java y el segundo un paquete de Java desde la que importar el tipo si no se importa de manera predeterminada (java.lang
):
val SqlTypesToJavaTypeNames =
Map(Types.BIGINT -> ("Long", None),
Types.BINARY -> ("byte[]", None),
Types.BIT -> ("Boolean", None),
Types.BOOLEAN -> ("Boolean", None),
Types.CHAR -> ("String", None),
Types.DATE -> ("Date", Some("java.sql.Date")),
Types.DECIMAL -> ("BigDecimal", Some("java.math.BigDecimal")),
Types.DOUBLE -> ("Double", None),
Types.FLOAT -> ("Float", None),
Types.INTEGER -> ("Integer", None),
Types.LONGNVARCHAR -> ("String", None),
Types.LONGVARCHAR -> ("String", None),
Types.NCHAR -> ("String", None),
Types.NUMERIC -> ("BigDecimal", None),
Types.NVARCHAR -> ("String", None),
Types.REAL -> ("Float", None),
Types.SMALLINT -> ("Short", None),
Types.SQLXML -> ("String", None),
Types.TIME -> ("Time", Some("java.sql.Time")),
Types.TIMESTAMP -> ("Timestamp", Some("java.sql.Timestamp")),
Types.TINYINT -> ("Byte", None),
Types.VARCHAR -> ("String", None))
estoy tratando de coincidencia de patrones en una búsqueda de este mapa, donde dataType
es el valor java.sql.Types
de una base de datos de metadatos:
val (javaType, importType) =
SqlTypesToJavaTypeNames.get(dataType) match {
case Some(jType, Some(iType)) => (jType, iType)
case Some(jType, None) => (jType, null)
case None => throw new IllegalStateException("Unknown translation to Java type for SQL type " + dataType)
}
El compilador me está dando un error en el primer case
(comienza con case Some(jType, Some(iType))
): error: wrong number of arguments for <none>: (x: (java.lang.String, Option[java.lang.String]))Some[(java.lang.String, Option[java.lang.String])]
No estoy seguro de lo que está mal.
Te has perdido los paréntesis. 'Some (x, y)' no es 'Some ((x, y))'. –
Quité el 2.9.0 de la pregunta ya que no es específico de la nueva versión de scala –