приведение типов (as?) это тоже самое что и приведение типов(int к double)?
кастинг (as, as!, as?) работает, когда типы находятся в одной иерархии (например, если один из них является суперклассом другого). Когда ты пишешь Int(2.0), то работает инициализатор Инта, который принимает значение Дабл, и каким-то волшебным образом делает из него Инт