Типирование строки с ошибкой непредсказуемо - PullRequest
0 голосов
/ 10 мая 2019

Это я странный. В проекте, над которым я работаю, у меня есть следующий код

let stuff = "stuff" as Error

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

Я создал пустой проект с той же версией swift (4.2). В этом тестовом проекте та же самая строка дает мне

«Строка» не преобразуется в «Ошибка»; Вы хотели использовать «как!» в заставить опуститься?

что-то вроде того, что я ожидал в первую очередь. Это заставило меня поверить, что код компилируется в исходном проекте, потому что некоторая зависимость делает что-то вроде магии, поэтому добавил все зависимости в мой тестовый проект, но это ничего не изменило - он все равно не скомпилируется.

Я изо всех сил стараюсь обернуть голову вокруг того, что здесь происходит, но я застрял и мне нужна твоя помощь, чтобы понять это. Может быть, это какой-то флаг компилятора? или есть зависимость, которая делает что-то вроде магии с ключевым словом as? Как я могу понять, что здесь происходит?

1 Ответ

1 голос
/ 10 мая 2019

Вы должны добавить код ниже в вашем новом проекте.

extension String: Error {}

Позволяет выбросить строку как ошибку

func someFunction() throws {
    throw "some message" 
}    
do {
    try someFunction() 
} catch let errorMessage {
    print(errorMessage) 
}
...