Andreas Sinz
05/31/2018, 12:21 PMfun changeName(first, last)
poohbar
05/31/2018, 12:21 PMAndreas Sinz
05/31/2018, 12:22 PMpoohbar
05/31/2018, 12:24 PMpoohbar
05/31/2018, 12:24 PMpoohbar
05/31/2018, 12:25 PMpoohbar
05/31/2018, 12:37 PMclass PersonKotlin(
private var _firstName: String,
private var _lastName: String,
private var _updated: Instant
) {
val firstName get() = _firstName
val lastName get() = _lastName
val updated get() = _updated
fun changeName(firstName: String, lastName: String) {
this._firstName = firstName
this._lastName = lastName
this._updated = Instant.now()
}
}
poohbar
05/31/2018, 12:38 PMAndreas Sinz
05/31/2018, 12:44 PMclass PersonKotlin(
_firstName: String,
_lastName: String,
_updated: Instant
) {
var firstName = _firstName
private set
var lastName = _lastName
private set
var updated = _updated
private set
fun changeName(firstName: String, lastName: String) {
this.firstName = firstName
this.lastName = lastName
this.updated = Instant.now()
}
}
andyb
05/31/2018, 12:49 PMchangeName
function return a copy of the instance with modified fields.poohbar
05/31/2018, 1:00 PMpoohbar
05/31/2018, 1:00 PMpoohbar
05/31/2018, 1:01 PMAndreas Sinz
05/31/2018, 1:20 PMandyb
05/31/2018, 1:31 PMinitial state
+ sum of actions. NB - It's a bit more complex than that as system can roll up state + events to create interim snapshots.
This maintains in effect maintains the immutability of the entities but allows updates (if that makes sense 🙂 )