Nel tentativo di scrivere un'API sto lottando con le raccolte di Scala in 2.8 (.0-beta1).Come si implementa una raccolta in Scala 2.8?
Fondamentalmente quello che serve è scrivere qualcosa che:
- aggiunge funzionalità ai set immutabili di un certo tipo
- in cui tutti i metodi come filtro e mappare restituire un insieme dello stesso tipo senza dover eseguire l'override tutto (che è il motivo per cui sono andato per 2.8 in primo luogo)
- dove tutte le raccolte ottenute con questi metodi sono costruite con gli stessi parametri della collezione originale (simile a come SortedSet passa attraverso un ordinamento via impliciti)
- che è ancora un tratto in sé, indipendentemente da eventuali implementazioni impostate.
Inoltre, desidero definire un'implementazione predefinita, ad esempio basata su un hashset. L'oggetto associato del tratto potrebbe utilizzare questa implementazione predefinita. Non sono ancora sicuro di aver bisogno della piena potenza delle fabbriche di costruttori per mappare il mio tipo di raccolta su altri tipi di raccolta.
Ho letto il paper on the redesign of the collections API ma sembra che le cose siano cambiate un po 'da allora e mi mancano alcuni dettagli. Ho anche analizzato il codice sorgente delle raccolte ma non sono sicuro che sia ancora coerente.
Idealmente, quello che mi piacerebbe vedere è un tutorial pratico che mi spiega passo passo i bit di cui ho bisogno o una descrizione estesa di tutti i dettagli, così posso giudicare da me quali bit ho bisogno . Mi è piaciuto il capitolo sull'uguaglianza degli oggetti in "Programming in Scala". :-)
Ma apprezzo qualsiasi suggerimento di documentazione o esempi che mi aiutino a capire meglio il nuovo design delle collezioni.
http://lampwww.epfl.ch/~odersky/papers/fsttcs2009.pdf –
Grazie, Lukas, leggerò anche quello. –
Vedere anche http://daily-scala.blogspot.com/2010/04/creating-custom-traversable.html ("Creazione di implementazioni personalizzate percorribili", da Jesse Eichar e dal blog "Daily scala") – VonC