элемент concat two array [row] в карте

Поскольку 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
0
задан HDev007 3 March 2019 в 22:11
поделиться