In swift when you call a function you add the values for the parameters. If you want to store a function in a variable or pass it to another function you use its full name, which includes all of the external parameter names (this helps to disambiguate between overloads and it comes from objective C where the selector for the function includes all of the paramter names). It doesn't make sense to add values for the paramters because you aren't invoking the function, you are referencing the function itself so someone else can invoke it later (the gesture recognizer in your case). You can see how this naming works if you look at the apple documentation for any swift function. For instance tableView(_:cellForRowAt:). Note that even the unamed parameter _ is part of the method signature.
Here is a playground that illustrates the point (note that using the parameter names ensures we are refering to the correct function):
import PlaygroundSupport
func multiply () {
print("not implmented")
}
func multiply (_ lhs: Int, by rhs: Int) -> (Int) {
return lhs * rhs
}
var myfunc = multiply(_:by:)
print(myfunc(2, 3))
The output is
6
and not
not implmented