Пытаясь написать API, я борюсь с коллекциями Scala в 2.8 (.0-beta1).
В основном мне нужно написать что-то, что:
- добавляет функциональность неизменяемым наборам определенного типа
- где все методы, такие как filter и map, возвращают коллекцию одного и того же типа без необходимости переопределять все (именно поэтому я остановился на 2.8)
- где все коллекции, которые вы получаете с помощью этих методов, построены с теми же параметрами, что и у исходной коллекции (аналогично тому, как SortedSet выполняет упорядочение с помощью имплицитов)
- , который по-прежнему является чертой сам по себе, независимо от каких-либо реализаций набора.
Кроме того, я хочу определить реализацию по умолчанию, например, на основе HashSet. Сопутствующий объект черты может использовать эту реализацию по умолчанию. Я еще не уверен, нужна ли мне вся мощь заводов-строителей для сопоставления моего типа коллекции с другими типами коллекции.
Я прочитал статью о редизайне API коллекций , но с тех пор кажется, что все немного изменилось, и я упускаю некоторые детали там. Я также просмотрел исходный код коллекций, но пока не уверен, что он очень последовательный.
В идеале я бы хотел увидеть практическое руководство, которое шаг за шагом рассказывает мне только нужные мне биты, или подробное описание всех деталей, чтобы я мог сам судить, какие биты мне нужны. Мне понравилась глава о равенстве объектов в "Программирование в Scala". : -)
Но я ценю любые ссылки на документацию или примеры, которые помогают мне лучше понять дизайн новых коллекций.