Swift - включить метатипы - PullRequest
       10

Swift - включить метатипы

2 голосов
/ 30 апреля 2019

Опция 1:

func getKeyByType<T:Decodable>(type: T.Type) -> String {

    if (type == [String].self){
        return "storageKey"
    }

    return "nothing"
}

Опция 2:

func getKeyByType<T:Decodable>(type: T.Type) -> String {

    switch type {
    case [String].self:
        return "storageKey"
    default:
        return "nothing"
    }
}

//

getKeyByType(type: [String].self)

Первый метод работает правильно, но во втором я получаю ошибку компиляции:

Шаблон выражения типа '[String] .Type' не может соответствовать значениям типа 'T.Type'

Как заставить работать коммутатор с метатипами?

1 Ответ

3 голосов
/ 30 апреля 2019

Решение:

switch type {
case is [String].Type :
    return "storageKey"
default:
    return "nothing"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...