2016-08-16 5 views

ответ

7

() ->() только что означает Void -> Void - замыкание, которое не принимает параметров и не имеет возвращаемого значения.

В Swift пустое является тиалиасом для пустого кортежа,().

typealias Void =() Пустой тип кортежа.

Это возвращаемый по умолчанию тип функций, для которых не указан явный тип возвращаемого значения.

Для примера

let what1: Void->Void = {} or let what2: Int->Int = { i in return i } 

являются корректными выражениями с различными типами. Поэтому печать имеет тип ()->() (aka Void->Void). Строго говоря, printThat имеет типа (() ->()) ->() (aka (Void->Void)->Void

Пустоты функции не имеет много смысла как функция Int и т.д ... Каждая функция в Swift имеет тип, состоящую из типов параметра функции и типа возвращаемого значения.

Наконец, что касается «ничтожных» функций, обратите внимание, что нет никакой разницы между этими двумя функциональными сигнатурами:

func myFunc(myVar: String)  // implicitly returns _value_ '()' of _type_() 
func myFunc(myVar: String) ->() 

Как ни странно, вы можете иметь дополнительный пустой тип кортежа, поэтому ниже функция отличается от два выше:

func myFunc(myVar: String) ->()? { 
print(myVar) 
return nil 
} 

var c = myFunc("Hello") /* side effect: prints 'Hello' 
         value: nil 
         type of c:()?    */ 
+0

Приятное объяснение! Спасибо за ясное сомнение. –

0

То же, что и Swift mean.No параметр нет возвращаемого значения.

Смежные вопросы