Swift function with Void return type versus no return type
Simply, there is no difference. -> Void
is just an explicit way of saying that the function returns no value.
From docs:
Functions without a defined return type return a special value of type Void. This is simply an empty tuple, in effect a tuple with zero elements, which can be written as ().
Thus, these three function declarations below are same:
func someFunc() {}
func someFunc() -> Void {}
func someFunc() -> () {}
It's just some internal Swift inconsistency. Both definitions define the same, but:
func a() -> () {}
func b() {} //by default has same signature as a
func c() -> Void {} //has different signature than a && b
so:
var x:(() -> Void) = c //OK
var y:(() -> ()) = a //OK
var z:(() -> ()) = c //ERROR - different signatures even if they mean the same
x = a //ERROR - different signatures, can't convert "() -> Void" into "() -> ()"