Types Swift:枚举依赖于另一个枚举

Types Swift:枚举依赖于另一个枚举,types,enums,swift,Types,Enums,Swift,我正在制作一个简单的游戏来更好地了解新语言,我制作了描述游戏级别的枚举。我想做另一个枚举,描述每个级别上的敌人。(级别有不同的敌人)。所以,我想归档如下内容: enum GameLevel : Int { case Forest = 0, Swamp, Castle ... } enum Enemies : Int { // if .Forest than case Stump = 0, Frog // Forest Enemies //esle if

我正在制作一个简单的游戏来更好地了解新语言,我制作了描述游戏级别的枚举。我想做另一个枚举,描述每个级别上的敌人。(级别有不同的敌人)。所以,我想归档如下内容:

enum GameLevel : Int {

    case Forest = 0, Swamp, Castle
    ...
}

enum Enemies : Int {

   // if .Forest than
   case Stump = 0, Frog // Forest Enemies

   //esle if ...
   case Zombie = 0, Witch // Swamp Enemies
   case Knight = 0, Archer // Castle Enemies 


   //var ... some predefined properties that all enemies have but each enemy have it's own values  
}
enum GameLevel : Int {
    case Forest, Swamp, Castle
}

enum Enemies : Int {

    case Stump
    case Frog
    case Zombie
    case Witch
    case Knight
    case Archer

    static func enemiesInLevel(level: GameLevel) -> [Enemies] {
        switch level {
        case .Forest:
            return [Stump, Frog]
        case .Castle:
            return [Knight, Archer]
        default:
            return []
        }
    }

}

// this is how you can call it
let forestEnemies = Enemies.enemiesInLevel(.Forest)
let castleEnemies = Enemies.enemiesInLevel(.Castle)

enum有错误的语法,但我正在寻找一种方法来制作类似的东西。归档此文件的最佳解决方案是什么

您可以编写一个函数,返回给定级别中的所有敌人,如下所示:

enum GameLevel : Int {

    case Forest = 0, Swamp, Castle
    ...
}

enum Enemies : Int {

   // if .Forest than
   case Stump = 0, Frog // Forest Enemies

   //esle if ...
   case Zombie = 0, Witch // Swamp Enemies
   case Knight = 0, Archer // Castle Enemies 


   //var ... some predefined properties that all enemies have but each enemy have it's own values  
}
enum GameLevel : Int {
    case Forest, Swamp, Castle
}

enum Enemies : Int {

    case Stump
    case Frog
    case Zombie
    case Witch
    case Knight
    case Archer

    static func enemiesInLevel(level: GameLevel) -> [Enemies] {
        switch level {
        case .Forest:
            return [Stump, Frog]
        case .Castle:
            return [Knight, Archer]
        default:
            return []
        }
    }

}

// this is how you can call it
let forestEnemies = Enemies.enemiesInLevel(.Forest)
let castleEnemies = Enemies.enemiesInLevel(.Castle)

您可以向GameLevel添加实例方法,以列出与GameLevel特定元素相关的所有敌人

enum GameLevel : Int {
    case Forest = 0, Swamp, Castle
    func enemies() -> Array<Enemy> {
        switch self {
        case .Forest: return [.Stump, .Frog]
        case .Swamp: return [.Zombie, .Witch]
        case .Castle: return [.Knight, .Archer]
    }
}

enum Enemy : Int {
    case Stump = 0, Frog, Zombie, Witch, Knight, Archer
}

let forestLevel = GameLevel.Forest
forestLevel.enemies()
摘自:苹果公司《Swift编程语言》。iBooks


提示:您可以在
enum
@pNre中定义函数,我知道,但我不明白这对我有什么帮助。