Создать перечисление с параметром - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть несколько выходов в моем коде, поэтому я перегруппировал все это с помощью строки Enum.

Проблема в том, что у меня есть некоторые выходы, содержащие переменную.

Возможно ли создать Enumкто принимает переменную?

Пример с этой строкой

print("The name of the Team is \(team.name)")

Я хотел сделать что-то подобное:

enum Exemple: String {
    case TEAM_NAME(name: String) = "The name of the Team is \(name)"}

print(Exemple.TEAM.NAME("Team 1").rawvalue)

Спасибо

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Вы можете определить метод экземпляра или вычисляемое свойство для enum, которое будет возвращать строковое значение в зависимости от регистрационного регистра и связанного значения.Смотрите пример для детской площадки.

enum Example {
    case firstItem
    case secondItem(withText: String)

    var stringValue: String {
        switch self {
        case .firstItem: return "Simple string"
        case .secondItem(withText: let text): return "String with additional text: \(text)"
        }
    }
}

let myEnumItem: Example = .secondItem(withText: "Test")
let text = myEnumItem.stringValue
0 голосов
/ 21 сентября 2018

Возможно иметь перечисление со связанными значениями для случаев.Но чтобы получить результат, который вы ищете, вам понадобится функция.

enum Example {

    case teamName(name: String)
    case teamId(id: Int)

    func printName() {
        switch self {
        case .teamName(name: let name):
            print(name)
        default:
             break
        }
    }
}

let team = Example.teamName(name: "team1")
team.printName() // prints team1
0 голосов
/ 21 сентября 2018

Enum не может иметь как необработанное, так и связанное значение.Я думаю, что вы можете обойтись с соответствующей ценностью.Без необработанного значения перечисление все еще может предоставить вам достаточно информации для составления сообщения

...