Как использовать возвращаемое значение в обработчике завершения? - PullRequest
0 голосов
/ 13 октября 2018

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

вот что я сделал..

func productToString(num: Int,num2: Int,completion: (Int)->String){

    let result = num * num2

    completion(result)
}




let numberToString = productToString(num: 3, num2: 6) { (res) -> String in

    return "string:\(res)"

}


print(numberToString) // print statement prints ()

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

как использовать это возвращаемое значение?

1 Ответ

0 голосов
/ 13 октября 2018

Вы возвращаете значение в функцию productToString, но больше ничего не делаете с ним.

func productToString(num: Int,num2: Int,completion: (Int)->String){

    let result = num * num2

    completion(result) // <--- Your return value ends up here
}

Если вы хотите напечатать результат, вы должны вернуть его снова из productToString function.

func productToString(num: Int,num2: Int,completion: (Int)->String) -> String {

    let result = num * num2

    return completion(result)
}

Sidenote: печатаемые пустые скобки являются пустым кортежем, эквивалентным Void в Swift.

...