我正在将一些遗留的C#类重写为F#。其中一个类使用this的单个方法实现IIdentityMessageService.SendAsync(identityMessage)
在C#代码中,我看到了这个
if (transportWeb != null)
return transportWeb.DeliverAsync(message);
else
return Task.FromResult(0);
我在F#中试过这个
if transportWeb != null then
transportWeb.DeliverAsync(message)
else
Task.FromResult(0)
我在最后一行收到错误
This expression was expected to have type
Task
but here has type
Task<'a>
我错过了什么?感谢
答案 0 :(得分:8)
看起来DeliverAsync
会返回Task
,因此您需要两个分支才能返回Task
。 Task.FromResult(0)
会返回Task<int>
,因此您需要明确地将其翻译为Task
:
else
Task.FromResult(0) :> Task