f# 函数未被识别为参数
f# function not recognized as parameter
请打开这些类型签名以帮助我理解为什么这不起作用。
那么,如果你有解决方案,那就太好了。
我有这段代码,agent.Post 命令的签名是 Observer.Create<'T>(onNext: Action<'T>) : IObserver<'T>
let reservatinoRequestObserver = Observer.Create agent.Post
interface IHttpControllerActivator with
据我所知,这意味着 Observer.Create
应该使用单个通用参数执行操作,然后 return 一个 IObserver。
现在Post的定义是member MailboxProcessor.Post : message:'Msg ->unit
所以... Post 是一种方法,不是吗?这是一种采用单个参数的方法吗?它 return 无效不是吗?那不应该是Observer.Create的候选吗?这不是 Action<'T> 的确切规范吗?
好吧,有些事情,我得到 这个函数接受了太多参数,或者在不需要函数的上下文中使用:
帮帮我...我承认我的 F#很烂
首先,agent.Post
returns unit
,与void
不同。 F# 通常会为您在 void
和 unit
之间来回转换,但它们不是一回事。
其次,F# 函数不会隐式转换为 .NET 委托。
但是有一些方法可以做到:
您可以使用其构造函数显式创建委托:
let o = Observer.Create (new Action<_>( agent.Post ))
Lambda 也被很好地包装了
let o = Observer.Create (fun msg -> agent.Post msg)
使用 F# Rx-wrappers
还有一个couple of F# wrappers/interop for Rx on nuget - 看看吧,我想任何一个都行
请打开这些类型签名以帮助我理解为什么这不起作用。 那么,如果你有解决方案,那就太好了。
我有这段代码,agent.Post 命令的签名是 Observer.Create<'T>(onNext: Action<'T>) : IObserver<'T>
let reservatinoRequestObserver = Observer.Create agent.Post
interface IHttpControllerActivator with
据我所知,这意味着 Observer.Create
应该使用单个通用参数执行操作,然后 return 一个 IObserver。
现在Post的定义是member MailboxProcessor.Post : message:'Msg ->unit
所以... Post 是一种方法,不是吗?这是一种采用单个参数的方法吗?它 return 无效不是吗?那不应该是Observer.Create的候选吗?这不是 Action<'T> 的确切规范吗?
好吧,有些事情,我得到 这个函数接受了太多参数,或者在不需要函数的上下文中使用:
帮帮我...我承认我的 F#很烂
首先,agent.Post
returns unit
,与void
不同。 F# 通常会为您在 void
和 unit
之间来回转换,但它们不是一回事。
其次,F# 函数不会隐式转换为 .NET 委托。 但是有一些方法可以做到:
您可以使用其构造函数显式创建委托:
let o = Observer.Create (new Action<_>( agent.Post ))
Lambda 也被很好地包装了
let o = Observer.Create (fun msg -> agent.Post msg)
使用 F# Rx-wrappers
还有一个couple of F# wrappers/interop for Rx on nuget - 看看吧,我想任何一个都行