1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | object Main { def main(args:Array[String]) : Unit = { // a silly example class class Cov[+A](val value : A) {} class Cov2[+A](val1 :A, val value2 : A) extends Cov[A](val1) { } var v1 : Cov[Seq[Int]] = null v1 = new Cov(List(1,2,3)) v1 = new Cov2(List(1), List(2)) print(v1.value) class NCov[A](var value : A) {} class NCov2[A](val1 :A, var value2 : A) extends NCov[A](val1) { } var v2 : NCov[Seq[Int]] = null // v2 = new NCov(List(1,2,3)) //NOPE v2 = new NCov(List(1,2,3).asInstanceOf[Seq[Int]]) v2 = new NCov2(List(1,2,3).asInstanceOf[Seq[Int]], List().asInstanceOf[Seq[Int]]) v2.value = List(1) print(v2.value) var v3 : NCov[T] forSome { type T <: Seq[Int] } = null v3 = new NCov(List(1,2,3)) v3 = new NCov2(List(1), List(2)) // v3.value = List(1) // NOPE, as in the covariant case print(v3.value) // GEEE! var v4 : NCov[T] forSome { type T <: NCov[U] forSome { type U <: Any } } = null v4 = new NCov2(new NCov(1), null) var v5 : Cov[Cov[Any]] = null v5 = new Cov(new Cov2(1, 2)) } } |
b2JqZWN0IE1haW4KewogIGRlZiBtYWluKGFyZ3M6QXJyYXlbU3RyaW5nXSkgOiBVbml0ID0gewogICAgLy8gYSBzaWxseSBleGFtcGxlIGNsYXNzCiAgICBjbGFzcyBDb3ZbK0FdKHZhbCB2YWx1ZSA6IEEpIHt9CiAgICBjbGFzcyBDb3YyWytBXSh2YWwxIDpBLCB2YWwgdmFsdWUyIDogQSkgZXh0ZW5kcyBDb3ZbQV0odmFsMSkgewogICAgfQoKICAgIHZhciB2MSA6IENvdltTZXFbSW50XV0gPSBudWxsCiAgICB2MSA9IG5ldyBDb3YoTGlzdCgxLDIsMykpCiAgICB2MSA9IG5ldyBDb3YyKExpc3QoMSksIExpc3QoMikpCiAgICBwcmludCh2MS52YWx1ZSkKCiAgICBjbGFzcyBOQ292W0FdKHZhciB2YWx1ZSA6IEEpIHt9CiAgICBjbGFzcyBOQ292MltBXSh2YWwxIDpBLCB2YXIgdmFsdWUyIDogQSkgZXh0ZW5kcyBOQ292W0FdKHZhbDEpIHsKICAgIH0KCiAgICB2YXIgdjIgOiBOQ292W1NlcVtJbnRdXSA9IG51bGwKLy8gIHYyID0gbmV3IE5Db3YoTGlzdCgxLDIsMykpIC8vTk9QRQogICAgdjIgPSBuZXcgTkNvdihMaXN0KDEsMiwzKS5hc0luc3RhbmNlT2ZbU2VxW0ludF1dKQogICAgdjIgPSBuZXcgTkNvdjIoTGlzdCgxLDIsMykuYXNJbnN0YW5jZU9mW1NlcVtJbnRdXSwgTGlzdCgpLmFzSW5zdGFuY2VPZltTZXFbSW50XV0pCiAgICB2Mi52YWx1ZSA9IExpc3QoMSkKICAgIHByaW50KHYyLnZhbHVlKQoKCiAgICB2YXIgdjMgOiBOQ292W1RdIGZvclNvbWUgeyB0eXBlIFQgPDogU2VxW0ludF0gfSA9IG51bGwKICAgIHYzID0gbmV3IE5Db3YoTGlzdCgxLDIsMykpCiAgICB2MyA9IG5ldyBOQ292MihMaXN0KDEpLCBMaXN0KDIpKQovLyAgdjMudmFsdWUgPSBMaXN0KDEpIC8vIE5PUEUsIGFzIGluIHRoZSBjb3ZhcmlhbnQgY2FzZQogICAgcHJpbnQodjMudmFsdWUpCgogICAgLy8gR0VFRSEKICAgIHZhciB2NCA6IE5Db3ZbVF0gZm9yU29tZSB7IHR5cGUgVCA8OiBOQ292W1VdIGZvclNvbWUgeyB0eXBlIFUgPDogQW55IH0gfSA9IG51bGwKICAgIHY0ID0gbmV3IE5Db3YyKG5ldyBOQ292KDEpLCBudWxsKQoKICAgIHZhciB2NSA6IENvdltDb3ZbQW55XV0gPSBudWxsCiAgICB2NSA9IG5ldyBDb3YobmV3IENvdjIoMSwgMikpCiAgfQp9
-
upload with new input
-
result: Success time: 0.17s memory: 212032 kB returned value: 0
List(1)List(1)List(1)


