Разница между возвратом Void и () в быстром закрытии

ios swift

3596 просмотра

3 ответа

В чем разница между этими замыканиями?

let closureA: () -> ()

а также

let closureB: () -> Void
Автор: Addev Источник Размещён: 12.11.2019 09:14

Ответы (3)


26 плюса

Решение

Если вы посмотрите в заголовки, вы увидите, что Void является typealias для (),

/// The empty tuple type.
///
/// This is the default return type of functions for which no explicit
/// return type is specified.
typealias Void = ()

Вы можете убедиться, что, используя эту игровую площадку,

let a  = Void()
println(a) // prints  ()

Обновить

Если вы хотите увидеть объявление Void в заголовочном файле, в приведенном выше коде введите приведенный ниже код в быстрой игровой площадке или редакторе xcode, например,

  let a: Void  =  ()

Затем, cmd + клик по ключевому слову «Void» в вышеприведенном выражении, вы попадете в файл заголовка, где вы можете увидеть объявление для Void.

Документ был обновлен с дополнительной информацией, которая похожа на это,

/// The return type of functions that don't explicitly specify a return type;
/// an empty tuple (i.e., `()`).
///
/// When declaring a function or method, you don't need to specify a return
/// type if no value will be returned. However, the type of a function,
/// method, or closure always includes a return type, which is `Void` if
/// otherwise unspecified.
///
/// Use `Void` or an empty tuple as the return type when declaring a
/// closure, function, or method that doesn't return a value.
///
///     // No return type declared:
///     func logMessage(_ s: String) {
///         print("Message: \(s)")
///     }
///
///     let logger: (String) -> Void = logMessage
///     logger("This is a void function")
///     // Prints "Message: This is a void function"
public typealias Void = ()
Автор: Sandeep Размещён: 11.12.2014 12:18

3 плюса

Такой же. Это просто typealias, поэтому он работает точно так же.

typealias Void = ()

Похоже, Эрика Садун и Apple пытаются придерживаться Void: http://ericasadun.com/2015/05/11/swift-vs-void/

Автор: TenaciousJay Размещён: 03.02.2017 07:41

2 плюса

Там нет никакой разницы вообще

Void это псевдоним для ():

typealias Void = ()
Автор: Greg Размещён: 11.12.2014 12:11
Вопросы из категории :
32x32