Dire que j'ai une classe qui prend un type plus kinded, et je suis en train d'écrire quelque chose comme ceci:extraire et utiliser les paramètres de type dans les types les plus élevés?
class Foo[T[U]](thing: T[U]) {
def someMethodThatUsesU(arg: U): U = ???
}
Cela ne peut pas compiler, car le compilateur ne reconnaît pas le symbole U
. Comment venir? Existe-t-il un autre moyen d'écrire ceci sans faire quelque chose comme class Foo[U, T[U]]
?
Quelque contexte: ceci est un exemple simplifié du problème. En fin de compte, je voudrais écrire quelque chose comme ceci:
trait SomeTrait[T]
class SomeClass[T[U] <: SomeTrait[U]](arg: T[U]) {
def somethingWithU(arg: U): U = ???
}
Ah, merci de préciser ce que sont les types plus élevés. Oui, cela fonctionnerait, bien que ce soit essentiellement ce que j'essayais d'éviter à l'origine :( – bioball