Swift Enum有多种类型

时间:2014-08-18 00:31:18

标签: swift

我想弄清楚如何将我的Java Enum复制到Swift中,我不知道是否 这是正确的方法。

我想用Swift编写的Java中的Enum:

public enum EnumDB {

    DATABASE_NAME("DataBase"),
    DATABASE_VERSION(1);

    private String name;
    private int value;

    private EnumDB(String name) {
        this.name = name;
    }

    private EnumDB(int value) {
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public int getValue() {
        return value;
    }

}

My Swift Code:

enum EnumDB {

    case Name,Version

    func getName() -> String{
        switch self{
        case .Name: return "DataBase"
        }
    }

    func getNumber() -> Int{
        switch self{
        case .Version: return 1
        default: return 0
        }
    }
}

我的问题是:

  1. 这是创建具有多个值类型的枚举的正确方法,每个枚举都包含 另一种类型?
  2. 不幸的是这样我可以在每个Enum上调用方法getName()和getNumber(),因为我希望根据枚举类型显示这些方法。 枚举关联值和原始值没有帮助 结论我正在寻找的是写一个枚举,他的价值观可以包含不同的类型。
  3. 谢谢

1 个答案:

答案 0 :(得分:5)

你绝对可以拥有一个enum,其中包含不同类型的相关值,我认为这可以为您提供所需的内容。这就是我实现你的例子的方式:

enum EnumDB {
    case Name(String)
    case Version(Int)
}

let namedDB = EnumDB.Name("databaseName")

switch namedDB {
case .Name(let name):
    println("Database name is \(name)")
case .Version(let versionNumber):
    println("Database version is \(versionNumber)")
}