Я хотел бы создать функцию, которая может возвращать массив одного из нескольких разных типов, в зависимости от типа, с которым он параметризован. Суть в том, что я хотел бы указать возвращаемые значения как литералы. Есть ли способ сделать это (или что-то подобное этому?) Это должно выглядеть примерно так:
func values<T>() -> [T] {
switch T.self {
case is String.Type:
return ["A", "B", "C"]
default:
return []
}
}
Этот конкретный код выдает эту ошибку в строке возврата: «Невозможно преобразовать возвращаемое выражение типа «[String]» в возвращаемый тип «[T]»».
Причина, по которой меня это волнует, заключается в том, что я пытаюсь создать универсальный контроллер представления, который имеет переменную sections
(или функцию), где разделы являются элементами перечисления. Но я хочу использовать разные перечисления в зависимости от типа, с которым параметризуется класс.