HOWTO · Scala

Encuentra el tipo de variable en Scala

Este artículo habla sobre cómo encontrar el tipo de una variable en Scala.

En esta página

Este artículo enseñará cómo encontrar el tipo de variable en Scala. Veamos diferentes métodos para obtener el tipo de una variable en Scala en tiempo de ejecución.

Utilice la coincidencia de patrones en Scala

El tipo de variable siempre está presente en Scala y podemos pasarlo como parámetro.

Ejemplo:

def fun[T](data : T) = data

val x = 10
fun(x)

En el ejemplo anterior, podemos ver que T es int, que es el tipo de x. Pero para obtener el tipo de una variable en tiempo de ejecución como int, string, double, etc., podemos modificar el código anterior.

Código de ejemplo:

object MyClass {
    def fun[T](data:T)= data match{
        case _:Int => "Int"
        case _:Double => "Double"
        case _:String => "String"
        case _ => "Undefined"

    }
    def main(args: Array[String]) {

     val x = 5.6
     val y = "hero"
     val z = 234

     println(fun(x))
     println(fun(y))
     println(fun(z))


    }
}

Producción :

Double
String
Int

Utilice el método getClass en Scala

El método getClass en Scala se usa para obtener la clase del objeto Scala. Podemos usar este método para obtener el tipo de una variable.

Código de ejemplo uno:

object MyClass {

    def main(args: Array[String])
    {
    val x = 123;

    System.out.println(x.getClass)

    val y = "hero"

    System.out.println(y.getClass)

    val z = 34.56

    System.out.println(z.getClass)

    }
}

Producción :

int
class java.lang.String
double

El resultado anterior muestra que imprime java.lang.String cuando se trata de cadenas porque la cadena Scala no es más que un envoltorio alrededor de java.lang.String.

Entonces, en lugar de java.lang.String, si queremos una String con una salida más significativa, podemos usar getSimpleName y el método getClass.

Código de ejemplo dos:

object MyClass {

    def main(args: Array[String])
    {

    val y = "hero"

    System.out.println(y.getClass.getSimpleName)


    }
}

Producción :

String

Usar Manifiesto en Scala

Manifest es una característica de Scala; usar esto en el compilador en tiempo de ejecución puede obtener la información de tipo genérica. En Scala, podemos crear instancias con un parámetro de tipo, por ejemplo, def fun[T](data:T)= data; aquí, T es el parámetro de tipo.

Entonces, al crear un objeto de tipo Manifest[T], podemos obtener información completa sobre el tipo T.

Código de ejemplo:

object MyClass {

def myFunc[T: Manifest](t: T): Manifest[T] = manifest[T]

    def main(args: Array[String])
    {

    val y =123

    println(myFunc(y))


    }
}

Producción :

Int

Una de las principales ventajas de usar Manifiesto es encontrar el tipo de tipos no primitivos, como si una variable es una Lista o una Secuencia, etc.

Código de ejemplo dos:

object MyClass {

def myFunc[T: Manifest](t: T): Manifest[T] = manifest[T]

    def main(args: Array[String])
    {

    val y = List(1,2,3,4)

    val z = Seq("apple","mango")

    println(myFunc(y))

    println(myFunc(z))


    }
}

Producción :

scala.collection.immutable.List[Int]
scala.collection.immutable.Seq[java.lang.String]