Implementing mutable objects

Sourcery can also help generate a fully mutable class for your object using AutoMutable.stencil, as follows:

{% for type in types.implementing.AutoMutable %}
class Mutable{{ type.name }} {
{% for member in type.variables %}
var {{ member.name }}: {{member.typeName}}
{% endfor %}

init(
{% map type.variables into vars using var %}
{{ var.name }}: {{ var.typeName }}{% endmap %}
{{ vars|join:"," }}) {
{% for member in type.variables %}
self.{{ member.name }} = {{member.name}}
{% endfor %}
}
}
{% endfor %}
This stencil will not replicate all instances and class methods—it will only generate a Mutable copy of a plain object.