Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
f#函数未被识别为参数_F#_System.reactive_Agent - Fatal编程技术网

f#函数未被识别为参数

f#函数未被识别为参数,f#,system.reactive,agent,F#,System.reactive,Agent,请打开这些类型签名以帮助我理解为什么这不起作用。 那么,如果你有一个解决方案,那也太好了 我有这个代码,agent.Post命令有签名Observer.Create):IObserverunit 所以。。。Post是一种方法,不是吗?这是一种只接受一个参数的方法否?它会返回void no?那么,它不应该成为Observer的候选者吗?这不是动作的确切说明吗?首先,agent.Post返回unit,这与void不同。F#通常会在void和unit之间来回转换,但它们不是一回事 其次,F#函数不会隐

请打开这些类型签名以帮助我理解为什么这不起作用。 那么,如果你有一个解决方案,那也太好了

我有这个代码,agent.Post命令有签名
Observer.Create):IObserverunit


所以。。。Post是一种方法,不是吗?这是一种只接受一个参数的方法否?它会返回void no?那么,它不应该成为Observer的候选者吗?这不是动作的确切说明吗?首先,
agent.Post
返回
unit
,这与
void
不同。F#通常会在
void
unit
之间来回转换,但它们不是一回事

其次,F#函数不会隐式转换为.NET委托。 但有一些方法可以做到这一点:

可以使用委托的构造函数显式创建委托: 使用F#Rx包装纸
还有一个-看一看,我想任何人都可以

这不是100%正确-我允许自己编辑一下你的答案-我希望你不介意-如果你只是恢复更改(如果你没有足够的代表,让我知道,我会做)不应该
Observer.Create(Action agent.Post)
第一种方法做什么?它看起来有点像这样吵闹。应该这样做,只需添加泛型参数:
Observer.Create(Action agent.Post)
。将构造函数用作函数是F#4.0中的一项新功能,我不知道您使用的是哪个版本,因此我希望安全。对于F#3中只有一个参数的构造函数调用,您也可以省去括号;因此,它不会将其视为函数调用。这是互操作的常见陷阱-并不意味着您一点也不差劲但是,如果您不只是发布屏幕截图(通常可复制粘贴的代码是个好主意),您可以帮我们很多忙;)我认识这个代码!:)我最近也上了这门课。。我将为此编写的所有代码上传到github。这是一个VS2013项目,修改为使用Owin+KatanaWebAPI。检查git标记以了解内存、文件和azure持久性替代方案的关键阶段。就这些。希望有帮助!这一切都应该“起作用”。我可以在本地模拟器上运行Azure内容,也可以发布到Azure。
let reservatinoRequestObserver = Observer.Create agent.Post
interface IHttpControllerActivator with
let o = Observer.Create (new Action<_>( agent.Post ))
let o = Observer.Create (fun msg -> agent.Post msg)