Есть идеи, почему это не компилируется: https://scastie.scala-lang.org/iPmLyim4Q8aQ2aMNIfj2gA
opaque type Global[Value] = Unit
object Global:
def derived[Value]: Global[Value] = ()
case class Yo() derives Global
❗Playground.Global не является типом класса.
Но это так: https://scastie.scala-lang.org/d148ISEcQ8Swu96lH6JMCw
case class Global[Value]()
object Global:
def derived[Value]: Global[Value] = Global()
case class Yo() derives Global
?
Спасибо, отредактировал по вашему предложению @AndreyTyukin
Как отметил @MartinHH в комментариях, на сегодняшний день это не поддерживается, и открыт билет на улучшение .
Спасибо
Что касается минимизации примера: обратите внимание, что
trait Dimensions
здесь не имеет особого значения: если заменитьDimensions[Value]
наUnit
везде, это все равно приведет к тому же поведению; Кроме того,object Dimensions:
кажется отвлекающим фактором, и его можно удалить, не теряя сути.