Załóżmy, że mam:Dlaczego nie mogę utworzyć F-ograniczony obiekt w Scala
trait A[AA <: A[AA]]
//or even just `
trait A[AA]
To nie działa:
scala> object AAA extends A[AAA.type]
<console>:8: error: illegal cyclic reference involving object AAA
object AAA extends A[AAA.type]
^
Ale to działa:
scala> class AAA extends A[AAA]; object AAA extends AAA
defined class AAA
defined module AAA
Robi się prawie (nie do końca) to samo i to działa. Jakiegokolwiek powodu?
P.S. A także, co dokładnie can I do wewnątrz takiego obiektu, aby wymusić cyklu infinte wewnątrz samego kompilatora?
http://blog.originate.com/blog/2014/02/27/types-inside-types-in-scala/, myślę, że to pomogłoby. Ale jaki problem próbujesz rozwiązać z tym? – Governa
Może być powiązany: https://issues.scala-lang.org/browse/SI-5082 – Governa
To samo pytanie tutaj: http://stackoverflow.com/questions/17915353/refer-to-object-type-in-object- definicja, ale nie ma dobrej odpowiedzi –