object Main {
class FooBar[A, B]
def main(args: Array[String]): Unit = {
//zwei unterschiedliche Schreibweisen die das gleiche
//meinen
var x: FooBar[Int, BigInt] = null
var y: Int FooBar BigInt = null
}
}
Damit eröffnen sich interessante Möglichkeiten des Typsystems, z.B: "Operatoren" aus Typen erstellen die wiederum Typen erstellen. Verwirrt? In Scala gibt es bereits
=:=,
<:<
und <%<
, diese Konstrukte kann man sich unter anderem auch selbst zusammenbasteln, im folgenden Beispiel bauen wir uns einen <@@@<
"Operator"
abstract class <@@@<[A, B] extends (A => B)
class Test[T <: (Int => Int)]
object Main {
def main(args: Array[String]) = {
val t = new Test[Int <@@@< Int]
}
}
Ziemlich cool, jetzt kann man sich Operatoren basteln die Typen erstellen und sich anfühlen wie native Features der Sprache :)
Keine Kommentare:
Kommentar veröffentlichen