Suchen Sie den Variablentyp in Scala
- Verwenden Sie den Musterabgleich in Scala
-
Verwenden Sie die
getClass
-Methode in Scala -
Verwenden Sie
Manifest
in 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]