var a: [Int?] = [1,2,3]

a.myLast = 4
print(a) // [Optional(1), Optional(2), Optional(4)]
print(a.last) // Optional(Optional(4))

a.myLast = .some(nil)
print(a) //[Optional(1), Optional(2), nil]
print(a.last) // Optional(nil)

a.myLast = nil
print(a) // []
print(a.last) // nil

var b: [Int] = [1,2,3]

b.myLast = 4
print(b) // [1,2,4]
print(b.last) // 4

b.myLast = nil
print(b) // []
print(b.last) // nil

見て分かる通り、セッター側とゲッター側で対応が取れており一貫性がある