2015-06-05 1 views
-1

Вот моя функция объявления с закрытиемКакова разница между ниже синтаксисов закрытия в быстрой

func isTextValid(input: String, completion: (result: Bool) ->()) { 
    if input == "Hello" { 
     completion(result: true) 
    } 
    else { 
     completion(result: false) 
    } 
} 

Когда я вызываю функцию ниже, как это он не печатает Правильный результат, который является "ложным", вместо этого она печатает "(0 элементы)"

isTextValid("hi", { (result) ->() in 
    println(result) 
}) 

Но когда я пишу код, как показано ниже, он работает отлично.

isTextValid("hi", { (result) ->() in 
    if result == false { 
     println(result) 
    } 
}) 

// ИЛИ

isTextValid("hi", { (result) ->() in 
    if result == false { 

    } 
    println(result) 
}) 

Я новичок на языке программирования Swift, и пытается свои руки в быстром языке в последнее время, но становится совершенно сбит с толку с синтаксисом и использование закрытия. Может кто-нибудь помочь в объяснении, в чем разница в обоих этих синтаксисах, почему он отлично работает со вторым синтаксисом, но не в порядке в первом.

Заранее спасибо. Счастливое кодирование.

ответ

1

Я думаю, что вы используете площадку, вы можете выбрать View -> Assistant Editor -> Show Assistant Editor для отображения журнала реальной консоли

isTextValid("hi", { (result) ->() in 
    println(result) 
}) 

isTextValid("hi", { (result) ->() in 
    if result == false { 
     println(result) 
    } 
}) 

isTextValid("hi", { (result) ->() in 
    if result == false { 

    } 
    println(result) 
}) 

Выход

ложные

ложные

ложные

Кроме того, вы можете позвонить функцию, как это

isTextValid("hi"){ 
     (result) ->() in 
     println(result) 
    } 
    isTextValid("hi"){ 
     println($0) 
    } 
+3

Я бы только добавить, что вам не нужно, чтобы запустить его в тренажере, чтобы увидеть фактический выход консоли - вы можете увидеть его в детской площадке тоже: Вид - > Помощник редактора -> Show Assistant Editor –

+0

Хороший совет, я обновлю ответ – Leo

+0

Спасибо вам обоим, он показал правильный результат. Да, я использую игровые площадки, есть ли разница в просмотре журналов консоли, показанных в помощнике редактора и стандартного редактора? Я не уверен, почему результаты отличаются от двух разных редакторов. –