Задать вопрос
@Lexemz

Почему нельзя тип Any привести к Int?

Здравствуйте!
Не совсем понимаю, почему я не могу тип Any напрямую привести к Int?

let str: Any = "12"
print( str as! Int )

60d8621932f5d793316955.png

При этом, я могу спокойно привести Any к строке
let str: Any = "12"
print( str as! String )

60d8626305d70356521337.png

Получается, что мне нужно приводить Any сначала к строке, а после к Int.
let str: Any = "12"
print( Int(str as! String) ?? 0)


В чем заключается логика такого поведения?
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
DevMan
@DevMan
потому что у этих типов не совпадают протоколы:
error: protocol type 'Any' cannot conform to 'BinaryInteger' because only concrete types can conform to protocols
print( Int(str) )

и да, кастить в строку и затем в инт.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
А если без кавычек?
let str: Any = 12
print( str as! Int )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы