В популярной настольной игре Монополия игроки имеют возможность покупать / обменивать различные объекты недвижимости, а когда они монополизируют определенный район, они могут строить дома. Я пытаюсь выразить все эти свойства как вложенное перечисление в Swift, но когда дело доходит до выражения свойств игрока в массиве, я в тупике.
Вот то, что я пробовал до сих пор.
enum Property {
enum Brown {
case mediterranean, baltic
}
enum LightBlue {
case oriental, vermont, connecticuit
}
enum pink {
case stCharles, states, virginia
}
...
}
var properties: [Property] = [
Property.Brown.baltic, // ERROR: Cannot convert value of type 'Property.Brown' to expected element type 'Property'
Property.Brown.mediterranean
]
Как видите, я не могу сохранить эти свойства в массиве [Property], потому что Property.Brown не является свойством (понятно). Что мне нужно изменить, чтобы иметь возможность хранить Property.<Insert Neighborhood Here>
s в массиве? Я понимаю, что [Любой] будет работать, но меня беспокоит безопасность типов, поэтому это не сработает.
Редактировать 05 июля 2018 года, 13:18 PDT
Я пишу программу, которая будет выступать в роли банка для игры в монополию, и мне нужен способ определить, каким игрокам (или банку) принадлежат свойства. В настоящее время я занимаюсь игровыми площадками и прототипами, чтобы выяснить, что мне подходит.