Я пытаюсь выяснить (если это возможно), как передать ассоциированное значение перечисления в функцию, а затем переключить тип для выполнения некоторого указанного c кода.
Это работает на игровой площадке:
struct Bar {}
struct Baz {}
enum Test {
case foo
case bar(value: Bar)
case baz(value: Baz)
}
func doSomething(value: Test) {
switch value {
case .foo: print("foo")
case .bar: print("bar")
case .baz: print("baz")
}
}
let bar = Bar()
doSomething(value: .bar(value: bar)) // prints "bar"
doSomething(value: .foo) // prints "foo"
Но возможно ли передать соответствующее значение непосредственно в качестве аргумента? Примерно так:
let bar = Bar()
doSomething(value: bar)
Это, конечно, не получается, потому что Bar
не тот же тип, что и Test
.
Как я могу это сделать?
РЕДАКТИРОВАТЬ
Для пояснения, в настоящее время я использую перегрузку, но хотел посмотреть, смогу ли я иметь один центральный Метод publi c, который затем отправляет приватным методам на основе типа соответствующего значения.