Was macht [B >: A] tun, in Scala?

Was bedeutet [B >: A] bedeutet in Scala? Und was sind die Auswirkungen?

Beispiel Referenz: http://www.scala-lang.org/node/129

class Stack[+A] {
    def push[B >: A](elem: B): Stack[B] = new Stack[B] {
        override def top: B = elem
        override def pop: Stack[B] = Stack.this
        override def toString() = elem.toString() + " " + Stack.this.toString()
    }
    def top: A = error("no element on stack")
    def pop: Stack[A] = error("no element on stack")
    override def toString() = ""
}

object VariancesTest extends Application {
    var s: Stack[Any] = new Stack().push("hello");
    s = s.push(new Object())
    s = s.push(7)
    println(s)
}
  • Die Beurteilung durch den Zusammenhang, es sieht aus wie "erlauben B repräsentieren eine Klasse, das ist auch darstellbar durch Ein" aber das ist nur eine Vermutung.
  • Versuchen Sie, diese auf der REPL: val s1 = new Stack().push("hello"); val s2 = s1.push(new Object()); val s3 = s2.push(7) - wie s1, s2 und s3 unterscheiden? (Dieser verbirgt sich hinter der Stack[Any] Art gegeben s; daran erinnern, dass Alle ist der oberste Typ in der Scala, dem nicht widersprechen.)
  • Duplikat von stackoverflow.com/questions/4869988/...
  • Schade, der ganz und gar nicht kommen, wenn ich suchte für ähnliche Fragen vor der Buchung. Ich Stimme zu halten, diese tollen Antworten..
  • Kennzeichnung als Duplikat löschen nicht Antworten, doch der Aufbau einer web-Duplikaten tatsächlich hilft sehen große Bild von dem problem (und ALLE Antworten). Ich bin nicht überrascht, Sie nicht schlagen, die post, das Thema ist völlig anders :-).
InformationsquelleAutor Jay Taylor | 2011-10-13
Schreibe einen Kommentar