09 · Data Structures
Apply present patch fields
In a with update, name?: patch.name keeps the original field when the new value is nil. Present values replace the field. A regular name: nil still assigns nil when the field permits it.
On this page
In a with update, name?: patch.name keeps the original field when the new value is nil. Present values replace the field. A regular name: nil still assigns nil when the field permits it.
Complete example
Apply present patch fields.
04-optional-patch.zolo
struct User { name: str, avatar: str? }
struct ProfilePatch { name: str?, avatar: str? }
let user = User { name: "Ada", avatar: "ada.png" }
let patch = ProfilePatch { name: "Ada Lovelace", avatar: nil }
let updated = user with { name?: patch.name, avatar?: patch.avatar }
let cleared = updated with { avatar: nil }
assert(updated.name == "Ada Lovelace")
assert(updated.avatar == "ada.png")
assert(cleared.avatar == nil)
assert(user.name == "Ada")
print(updated.name)
print(updated.avatar ?? "no avatar")
print(cleared.avatar ?? "no avatar")
Reference
zolo run examples/features/40-syntax-fourth/04-optional-patch.zolo --no-cache
See also