Interop между F# и лямбдами C#

Блок питания F# идет с рядом методов преобразования для перевода из Func <...> к функциям F#, или стандарт или tupled. Но это возможный достигнуть противоположного: в случае, если Вы хотите назвать из кода F# метод C#, который берет Func <...>, и хотят использовать собственное лямбда-выражение F# (например, забава x-> some_function_of (x))?

Если я отправляю функцию F# с подписью '-> 'b к методу C#, который ожидает Func затем, компилятор F# генерирует следующую ошибку:

This expression was expected to have type Function<'T,'R> but here has type 'T -> 'R

Я хочу остаться с лямбда-выражениями F#, но использовать слой перевода, чтобы смочь отправить их как лямбда C# Func. Действительно ли это достижимо?

25
задан Vagif Abilov 2 August 2010 в 21:38
поделиться

1 ответ

F# предоставляет конструкторы для всех типов делегатов, которые принимают F# значения соответствующих типов функций. Например, в вашем случае вы хотите использовать System.Func<_,_>(fun x -> ...), который применяет порожденный конструктор типа ('a -> 'b) -> System.Func<'a, 'b>.

33
ответ дан 28 November 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: