Включение общего типа?
Можно ли включить общий тип в Swift?
Вот пример того, что я имею в виду:
func doSomething<T>(type: T.Type) {
switch type {
case String.Type:
// Do something
break;
case Int.Type:
// Do something
break;
default:
// Do something
break;
}
}
При попытке использовать вышеприведенный код, я получаю следующие ошибки:
Binary operator '~=' cannot be applied to operands of type 'String.Type.Type' and 'T.Type'
Binary operator '~=' cannot be applied to operands of type 'Int.Type.Type' and 'T.Type'
Есть ли способ включить тип или добиться чего-то подобного? (вызов метода с общим и выполнение различных действий в зависимости от типа родового)
Ответы
Ответ 1
Вам нужен шаблон is
:
func doSomething<T>(type: T.Type) {
switch type {
case is String.Type:
print("It a String")
case is Int.Type:
print("It an Int")
default:
print("Wot?")
}
}
Обратите внимание, что операторы break
обычно не нужны, нет
"падение по умолчанию" в случаях Swift.