Действительно трудно понять, как расширить неизменяемый набор с помощью класса, который будет представлять набор конкретного типа.Я делаю это, чтобы попытаться создать хороший DSL.
Я хотел бы иметь класс Thing, и когда вы добавляете «вещи» вместе, вы получаете объект ThingSet, который расширяет Set.
class Thing(val name:String){
def +(other: Thing):ThingSet = new ThingSet() + other
}
Я просто не могу понять, как создать объект ThingSet.Я знаю, что мне нужно смешивать такие черты, как GenericSetTemplate, SetLike и т. Д. Но я просто не могу заставить его работать.
Пожалуйста, кто-нибудь может дать мне несколько советов, так как я не могу найти что-то достаточно ясное для изученияот.Я попытался посмотреть на реализации BitSet и HashSet, но заблудился.