我正在将一些遗留的C#类重写为F#.其中一个类使用this.SendAsync(identityMessage)的单个方法实现IIdentityMessageService.
在C#代码中,我看到了这一点
if (transportWeb != null)
return transportWeb.DeliverAsync(message);
else
return Task.FromResult(0);
Run Code Online (Sandbox Code Playgroud)
我在F#中试过这个
if transportWeb != null then
transportWeb.DeliverAsync(message)
else
Task.FromResult(0)
Run Code Online (Sandbox Code Playgroud)
我在最后一行收到错误
This expression was expected to have type
Task
but here has type
Task<'a>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?谢谢
它看起来像DeliverAsync
返回一个Task
,所以你需要两个分支返回一个Task
.Task.FromResult(0)
返回一个,Task<int>
所以你需要明确地将它改为Task
:
else
Task.FromResult(0) :> Task
Run Code Online (Sandbox Code Playgroud)