Encuentra el tipo de variable en Scala

Suraj P 21 junio 2023
  1. Utilice la coincidencia de patrones en Scala
  2. Utilice el método getClass en Scala
  3. Usar Manifiesto en Scala
Encuentra el tipo de variable en Scala

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]
Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub