Что эквивалентно, наконец, в Swift

Установите для CSS для #footer значение:

position: absolute;
bottom: 0;

Затем вам нужно будет добавить padding или margin в нижней части ваших #sidebar и #content до совпадают с высотой #footer или когда они перекрываются, #footer будет их покрывать.

Кроме того, если я правильно помню, IE6 имеет проблемы с CSS bottom: 0. Возможно, вам придется использовать JS-решение для IE6 (если вас интересует IE6, который есть).

17
задан tounaobun 22 June 2015 в 07:21
поделиться

5 ответов

Если вы думаете, что обработка ошибок SWIFT 2.0 - это то же самое, что и исключение, вы ошибаетесь.
Это не исключение, это ошибка, которая соответствует протоколу под названием ErrorType.
Цель блока - перехватить ошибку, выданную с помощью функции или метода выброса.
В принципе нет finally, что вы можете сделать, это обернуть ваш код в блок defer, это гарантированно будет выполнено и конец области.
Вот пример из руководства по программированию SWIFT 2

func processFile(filename: String) throws {
    if exists(filename) {
        let file = open(filename)
        defer {
            close(file)
        }
        while let line = try file.readline() {
            /* Work with the file. */
        }
        // close(file) is called here, at the end of the scope.
    }
}

Вы используете оператор отсрочки для выполнения набора операторов непосредственно перед тем, как выполнение кода покидает текущий блок кода. Это позволяет вам выполнить необходимую очистку независимо от того, произошла ли ошибка. Примеры включают закрытие любых дескрипторов открытых файлов и освобождение любой выделенной вручную памяти.

18
ответ дан Andrea 22 June 2015 в 07:21
поделиться

Swift 2 вводит свой взгляд на это требование, используя ключевое слово defer

defer { 
    print("Do clean up here") 
}

finally = defer в Swift 2.

Статья для отложить ключевое слово

2
ответ дан Ashish Kakkad 22 June 2015 в 07:21
поделиться

прочитайте это: Ключевое слово defer в Swift 2: попробуйте / наконец сделали правильно

, например:

print("Step 1")

do {
    defer { print("Step 2") }
    print("Step 3")
    print("Step 4")
}

print("Step 5")

Вывод: 1, 3, 4, 2,5

0
ответ дан Arash Jamshidi 22 June 2015 в 07:21
поделиться

То, что вы ищете, называется defer. Он определяет блок кода, который не выполняется до тех пор, пока выполнение не собирается покинуть текущую область, но оно всегда выполняется.

func processFile(filename: String) throws {
    if exists(filename) {
        let file = open(filename)
        defer {
            close(file)
        }
        while let line = try file.readline() {
            /* Work with the file. */
        }
        // close(file) is called here, at the end of the scope.
    }
}

Подробнее о defer см. В документации Apple Swift, особенно в разделе «Задание действий по очистке» .

3
ответ дан miho 22 June 2015 в 07:21
поделиться

defer в Swift 2.0 похож на finally, что означает, что swift обеспечивает выполнение кода отсрочки в конце текущей области действия функции. Вот некоторые моменты, которые мне нужно знать: 1) Независимо от того, что даже Guard вернет 2) Мы можем написать несколько областей отсрочки

Вот пример и вывод, который демонстрирует несколько отсрочек:

    func myMethod()  {
    print("Message one")
    print("Message two")
    print("Message three")
    defer {
        print("defered block 3")
    }
    defer {
        print("defered block 2")
    }
    defer {
        print("defered block 1")
    }
    print("Message four")
    print("Message five")

}
 Output:
 Message one
 Message two
 Message three
 Message four
 Message five
 defered block 1
 defered block 2
 defered block 3
9
ответ дан Narendra G 22 June 2015 в 07:21
поделиться
Другие вопросы по тегам:

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