che sto cercando di fare quanto segueCaso tipo di argomento costruttore di classe in base al valore precedente argomento
trait Stateful {
type State
}
case class SystemState(system: Stateful, state: system.State) // does not compile
Cioè, il tipo di state
dipende (il valore di) system
. Questo, tuttavia, non è supportato:
illegale digitare metodo dipende: parametro appare nel tipo di un altro parametro nella stessa sezione o meno un
Con argomenti delle funzioni, ho potuto dividere gli argomenti in due liste di argomenti, che non è possibile con un caso costruttore di classe:
def f(system: Stateful)(state: system.State): Unit = {} // compiles
Il meglio che posso fare è:
case class SystemState[S](system: Stateful { type State = S }, state: S) // compiles
ma stavo pensando che dovrebbe essere possibile senza un parametro di tipo, dal momento che in dotty, suppongo che i parametri di tipo sono desugared per digitare membri.
La mia domanda è, può essere espressa senza parametri di tipo?
In un contesto più generale, sto esplorando in che misura i parametri del tipo possono essere sostituiti dai membri del tipo e quando è una buona idea farlo.