簡體   English   中英

多種類型的Swift Enum

[英]Swift Enum with multiple types

我試圖弄清楚如何將Java枚舉復制到Swift中,我不知道這是否是正確的方法。

我想用Swift編寫的Java枚舉:

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;
    }

}

我的Swift代碼:

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. 不幸的是,這樣我可以在每個枚舉上調用方法getName()和getNumber(),這很糟糕,因為我希望根據枚舉類型來呈現這些方法。 枚舉關聯值和原始值並不能幫助我得出我正在尋找的枚舉,即他的值可以包含不同類型。

謝謝

絕對可以有一個帶有不同類型關聯值的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)")
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM