Что означает закрытие после init? - PullRequest
0 голосов
/ 14 декабря 2018

Шаблон игровой площадки XCode генерирует код с классом:

class GameScene: SKScene {
 // no init override here
}

, затем создает экземпляр класса:

if let scene = GameScene(fileNamed: "GameScene") {
    // Set the scale mode to scale to fit the window
    scene.scaleMode = .aspectFill

    // Present the scene
    sceneView.presentScene(scene)
}

Я искал документацию, а init с трейлингом нетзакрытие.Ни один из init не определен в GameScene.Так что же такое закрытие после GameScene(fileNamed: "GameScene")?

1 Ответ

0 голосов
/ 14 декабря 2018

Это не замыкание, а необязательное связывание.GameScene(fileNamed:) является неисправным инициализатором, поэтому может вернуть nil.Необязательный параметр if let связывает возвращаемое значение, что означает, что ветвь if удаляется, если возвращаемое значение не было nil, а внутри оператора if гарантировано, что scene не равно нулю.

Подробнее см. В разделе Дополнительное связывание в Руководстве по языку Swift.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...