Вот очевидная ситуация, которая должна постоянно возникать у людей:
struct Foundation {
var columns : [Column] = [Column(), Column()]
}
struct Column : CustomStringConvertible {
var cards = [Card]()
var description : String {
return String(describing:self.cards)
}
}
struct Card {}
var f = Foundation()
for var c in f.columns {
c.cards.append(Card())
}
Этот код допустим, но, конечно, он не влияет на f
, потому что var c
все еще является копией - фактическое columns
из f
не затронуто.
У меня нет проблем с пониманием , почему это происходит. Мой вопрос в том, что люди обычно делают .
Ясно, что я могу просто уйти от всего этого, объявив столбец class вместо struct , но так ли это обычно делают люди? (Я пытаюсь следовать ментальной строгости, что следует избегать занятий, когда нет необходимости в динамическом распределении / полиморфизме / создании подклассов; возможно, я слишком далеко захожу, или, может быть, есть что-то, что обычно делают другие люди, например, inout
как-то.)