Когда пишешь иммутабельные классы, особенно Record-ы, часто возникает потребность добавить метод который возвращает копию this, но с одним свойством измененным.
Даже в микрософте это поняли, когда
разрабатывали Immutable Collections.
Заметна тенденция для каждого свойства такого класса писать специальный метод With..., который так и делает:
[Record]
class MyData
{
[Accessor] _a : A;
[Accessor] _b : B;
[Accessor] _c : C;
public WithA(newA : A) : MyData
{
MyData(newA, this.B, this.C)
}
public WithB(newB : B) : MyData
{
MyData(this.A, newB, this.C)
}
public WithC(newC : C) : MyData
{
MyData(this.A, this.B, newC)
}
}
Писать все это влом, конечно же. В связи с чем вопросы.
Что вы обычно делаете в такой ситуаци? Насколько было бы круто написать макрос GenerateUpdaters, который в Record-ах для каждого поля мог бы таких методов нагенерить? Достоин ли он стандартной библиотеки?
Спасибо за внимание.