Closure types are subject to the same switching patterns that any other types are:
switch someClosure {
case let runnable as () -> Void:
runnable()
case let intConsumer as (Int) -> Void:
intConsumer(4)
case let stringConsumer as (String) -> Void:
stringConsumer("A")
}