Почему проект шаблона игры Sprite Kit Game, созданный Xcode, использует as!
:
if let sceneNode = scene.rootNode as! GameScene? {...}
Разве следующее не будет одинаково хорошо?
if let sceneNode = scene.rootNode as? GameScene {...}
Обратите внимание, что это не стандартный вопрос «в чем разница между as?
и as!
». И Downcasting options в Swift: как? Типа, или как! Тип? очень близок, но это не совсем одно и то же. Вопрос в том, что два приведенных выше паттерна кажутся функционально похожими (они оба приводятся вниз и разворачиваются), но непонятно, почему автор использовал if let ... as! GameScene? { ... }
вместо более распространенного и естественного if let ... as? GameScene { ... }
.
if
, и этоBar?
(а неBar
). Когда я смотрю на повторяющийся вопрос, ответ также говорит, чтоas!
следует использовать только тогда, когда вы знаете, что понижение не подведет (это, конечно, имеет смысл). Итак, насколько я понимаю,as! Type?
не добавляет больше преимуществ по сравнению сas? Type
практически (в этом операторе ifas! Type?
можно заменить наas? Type
, и, вероятно, это безопаснее) - person Stephenye   schedule 11.02.2018