да!на самом деле мой вопрос кажется извращенным и бессмысленным, извините :( Я запутался, когда в конкретной ситуации (это не та ситуация :)) вам нужно реализовать функцию копирования при записи для вашего собственного типа данных, например, когда структурасодержат изменяемую ссылку, но все равно должны сохранять семантику значения
Возможно, приведенный ниже код мог бы объяснить, что я пытался сделать (хотя и бессмысленно :)), спасибо за ваш ответ;)
class Identifier {
static var instanceNumbers = 0
var identity:Int
init(identity:Int) {
Identifier.instanceNumbers += 1
self.identity = identity
}
}
struct Card: CustomStringConvertible {
private var _id:Identifier
var id:Identifier {
mutating get {
if !isKnownUniquelyReferenced(&_id){
let identity = _id.identity
_id = Identifier(identity: identity)
}
return _id
}
}
init(id:Identifier){
self._id = id
}
var description: String {
return "card:\(_id.identity)"
}
}
let cardOne = Card(id: Identifier(identity: 1))
let cardTwo = Card(id: Identifier(identity: 2))
Identifier.instanceNumbers // 2
var cardThree = cardTwo
Identifier.instanceNumbers // 2
cardThree.id.identity = 3
Identifier.instanceNumbers // 3