gpt4 book ai didi

arrays - 使用嵌套的 decended 枚举案例作为父枚举案例

转载 作者:搜寻专家 更新时间:2023-11-01 07:01:10 26 4
gpt4 key购买 nike

在流行的棋盘游戏 Monopoly 中,玩家有机会购买/交易不同的属性(property),当他们垄断某个街区时,他们可以 build 房屋。我试图在 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>在数组中?我知道 [Any] 可以,但我担心类型安全,所以这行不通。

编辑 2018 年 7 月 5 日,13:18 PDT我正在编写一个程序,它将充当大富翁游戏的银行,并且需要一种方法来确定哪些玩家(或银行)拥有属性(property)。我目前正在 Playground 和原型(prototype)设计中找出适合我的方法。

最佳答案

众所周知,

because a Property.Brown isn't a Property (understandable).

您可能需要您的 Property.BrownProperty 共有的类型。淡蓝色, ...

也许你可以使用一个协议(protocol)来将它们存储在一个数组中:

protocol PropertyEnums {}

enum Property {
enum Brown: PropertyEnums {
case mediterranean, baltic
}

enum LightBlue: PropertyEnums {
case oriental, vermont, connecticuit
}

//...
}

var properties: [PropertyEnums] = [
Property.Brown.baltic,
Property.Brown.mediterranean,
//...
]

但我不确定这是否是最适合您的解决方案,因为您没有展示 properties 的用例。


对于某些用例,这样的东西可能会更好:

enum Property {
enum Brown {
case mediterranean, baltic
}

enum LightBlue {
case oriental, vermont, connecticuit
}

//...

case brown(Brown)
case lightBlue(LightBlue)
//...
}

var properties: [Property] = [
.brown(.baltic),
.brown(.mediterranean),
//...
]

请告诉我们您希望如何使用您的属性

关于arrays - 使用嵌套的 decended 枚举案例作为父枚举案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51198636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com