Hola compañeros Scala programadorespartido costumbre patrón de Scala con java.lang.String y Caso Clase
He estado trabajando con Scala para algunos meses ahora, sin embargo, tengo un problema con un poco de materia propiamente básicas, te estoy esperando lo ayudaré con esto.
case class PersonClass(name: String, age: Int)
object CaseTester {
def main(args:Array[String])
{
val string = "hej"
string match {
case e:String => println(string)
case PersonClass => println(string)
}
}
}
Cuando estoy haciendo como esto me sale error:
pattern type is incompatible with expected type;
found : object PersonClass
required: java.lang.String
case PersonClass => println(string)
Y si luego cambio de la segunda línea en el patrón de coincidencia a lo siguiente:
case e:PersonClass => println(string)
entonces consigo el error:
error: scrutinee is incompatible with pattern type;
found : PersonClass
required: java.lang.String
case e:PersonClass => println(string)
Sin embargo, si cambio la definición de cadena a la siguiente, compila bien en ambos casos.
val string:AnyRef = "hej"
Originalmente me encontré con el problema al intentar hacer una clase el caso de que también debe ser capaz de ser un extractor, sin embargo cuando pienso Eso no tiene mucho sentido :) – Stefan
Usted no puede coincidir con una clase como eso. 'case PersonClass =>' solo funciona si 'PersonClass' es un objeto. Para hacer coincidir las clases, puede asignar una variable local: 'case e: String =>' o descomprimir si es una tupla o una clase de caso: '(3, 4) match {case (a, b) =>' – Ryan