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")
 }