Поскольку Toto
имеет два метода с одним и тем же именем, но с разными сигнатурами, вы должны указать, какой из них вы хотите:
let f1 = aToto.toto as () -> Void
let f2 = aToto.toto as (String) -> Void
f1() // Output: f1
f2("foo") // Output: f2
Альтернативно (как @Antonio правильно отмечено):
let f1: () -> Void = aToto.toto
let f2: String -> Void = aToto.toto
Если вам нужны функции curries, принимающие экземпляр класса в качестве первого аргумента, вы можете действовать одинаково, только подпись отличается (сравните комментарий @Antonios к вашему вопросу):
let cf1: Toto -> () -> Void = aToto.dynamicType.toto
let cf2: Toto -> (String) -> Void = aToto.dynamicType.toto
cf1(aToto)() // Output: f1
cf2(aToto)("bar") // Output: f2