Comment définir cette classe dans scalaDéfinir autoréférencement classe Scala (classe récursive)
data NestedList a = Elem a | List [NestedList a]
Cela signifie Haskell un NestedList est un type qui peut contenir Elem ou d'une autre NestedList. Est-il possible de faire ce genre de définitions récursives en scala?
En fait, ce que je suis en train de acheive
Vérifiez Problem 7 dans cette page.
Mise à jour ....
follwing les réponses ci-dessous, j'ai créé les NestedList
classes et cas pour Trait Elem
et NList
. Essayer de mettre en œuvre le flatten
, je suis coincé ici ..
def flatten[T](xs: NestedList[T]): List[T] = xs match{
case Elem(xs) => List(xs)
//case NList //have to fill this case
}
Ne sont pas ces types de données algébriques? –
modifié, merci! – retronym
Je ne suis pas sûr, je l'ai suivi, Pouvez-vous s'il vous plaît me montrer un exemple de la façon de définir la même classe que j'ai définie dans la question. –