Suchen Sie den Variablentyp in Scala
- Verwenden Sie den Musterabgleich in Scala
-
Verwenden Sie die
getClass-Methode in Scala -
Verwenden Sie
Manifestin Scala
In diesem Artikel erfahren Sie, wie Sie den Variablentyp in Scala finden. Sehen wir uns verschiedene Methoden an, um den Typ einer Variablen in Scala zur Laufzeit abzurufen.
Verwenden Sie den Musterabgleich in Scala
Der Variablentyp ist in Scala immer vorhanden und wir können ihn als Parameter übergeben.
Beispiel:
def fun[T](data : T) = data
val x = 10
fun(x)
Im obigen Beispiel können wir sehen, dass T int ist, was der Typ von x ist. Aber um den Typ einer Variablen zur Laufzeit wie int, string, double usw. zu erhalten, können wir den obigen Code ändern.
Beispielcode:
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))
}
}
Ausgang:
Double
String
Int
Verwenden Sie die getClass-Methode in Scala
Die Methode getClass in Scala wird verwendet, um die Klasse des Scala-Objekts zu erhalten. Wir können diese Methode verwenden, um den Typ einer Variablen zu erhalten.
Beispielcode eins:
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)
}
}
Ausgang:
int
class java.lang.String
double
Die obige Ausgabe zeigt, dass es java.lang.String ausgibt, wenn es um Strings geht, weil Scala-String nichts anderes als ein wrapper um java.lang.String ist.
Wenn wir also anstelle von java.lang.String einen String mit einer aussagekräftigeren Ausgabe wollen, können wir getSimpleName und die Methode getClass verwenden.
Beispielcode zwei:
object MyClass {
def main(args: Array[String])
{
val y = "hero"
System.out.println(y.getClass.getSimpleName)
}
}
Ausgang:
String
Verwenden Sie Manifest in Scala
Manifest ist eine Funktion in Scala; Wenn Sie dies zur Laufzeit verwenden, kann der Compiler die ‘generischen’ Typinformationen erhalten. In Scala können wir Instanzen mit einem Typparameter erstellen, zum Beispiel def fun[T](data:T)= data; hier ist T der Typparameter.
Wenn wir also ein Objekt vom Typ Manifest[T] erstellen, können wir vollständige Informationen über den Typ T erhalten.
Beispielcode:
object MyClass {
def myFunc[T: Manifest](t: T): Manifest[T] = manifest[T]
def main(args: Array[String])
{
val y =123
println(myFunc(y))
}
}
Ausgang:
Int
Ein großer Vorteil der Verwendung von Manifest besteht darin, den Typ von nicht primitiven Typen zu finden, z. B. ob eine Variable eine Liste oder eine Sequenz usw. ist.
Beispielcode zwei:
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))
}
}
Ausgang:
scala.collection.immutable.List[Int]
scala.collection.immutable.Seq[java.lang.String]
