Что означает «оператор do» ​​без блока catch? - PullRequest
0 голосов
/ 08 ноября 2018

Читая Программируя iOS 12 , я наткнулся на несколько примеров кодов с операторами do , без блоков захвата , например:

    do {
        let mars = UIImage(named:"Mars")!
        let sz = mars.size

        let r = UIGraphicsImageRenderer(size:CGSize(sz.width*2, sz.height), format:mars.imageRendererFormat)
        self.iv1.image = r.image { _ in
            mars.draw(at:CGPoint(0,0))
            mars.draw(at:CGPoint(sz.width,0))
        }
    }

    // ======

    do {
        let mars = UIImage(named:"Mars")!
        let sz = mars.size

        let r = UIGraphicsImageRenderer(size:CGSize(sz.width*2, sz.height*2), format:mars.imageRendererFormat)
        self.iv2.image = r.image { _ in
            mars.draw(in:CGRect(0,0,sz.width*2,sz.height*2))
            mars.draw(in:CGRect(sz.width/2.0, sz.height/2.0, sz.width, sz.height), blendMode: .multiply, alpha: 1.0)
        }
    }

Я был бы очень признателен, если бы кто-нибудь смог объяснить, для чего предназначены операторы без блоков catch .

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Это новая область кода: таким образом, вы можете использовать множество do statements, если хотите повторно использовать имя переменной. Как и во фрагменте вашего вопроса, переменные mars, sz и r существуют в обеих областях без ошибок.

Оператор do может быть помечен, что дает вам возможность выйти из этой области:

scopeLabel: do {
    for i in 0..<10 {
        for j in 0..<20 {
            if i == 2, j == 15 {
                break scopeLabel
            }
            else {
                print(i,j)
            }
        }
    }
}

Для более подробной информации, посмотрите здесь .

0 голосов
/ 08 ноября 2018

Поскольку здесь нет ничего, что могло бы произойти из-за ошибки, то с помощью команды do do можно скопировать и вставить тот же контент без изменения имен var, так как var scope - это блок do

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

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