Я хочу, чтобы мои функции выполнялись, некоторые из них используют до трех параметров. Сейчас я использую тот же код ниже с некоторыми вариантами для трех.Передача функции в качестве параметра и перегрузка
let GetTime f (args : string) =
let sw = Stopwatch.StartNew()
f (args)
printfn "%s : %A" sw.Elapsed
Я хочу заменить эти три функции этим.
let GetTime f (args : 'T[]) =
let sW = Stopwatch.StartNew()
match args.Length with
| 1 -> f args.[0]
| 2 -> f (args.[0] args.[1])
printfn "%A" sW.Elapsed
()
Но я получаю ошибку несоответствия типа, если я использую три функции, которые она работает. Можно ли отправить функцию в качестве параметра и использовать ее так?
Почему вы не можете использовать полиморфизм для функций 'member'? –
Я просто хотел сохранить его простым в модуле. Я пытаюсь пойти на более функциональный подход, без типов. Я знаю, что F # - многопарадигма, но я хотел попробовать другой подход. – EinsL
Просто обратите внимание, что ваш вопрос не имеет ничего общего с перегрузкой оператора. То, что вы описываете, является параметрическим полиморфизмом. – mydogisbox