【发布时间】:2021-10-23 05:58:59
【问题描述】:
在下面的函数 doTransfer 中出现错误:
'if' 表达式需要具有类型 'unit' 以满足上下文类型要求。它目前的类型为'bool.此错误出现在以以下结尾的每一行:
if xxxxxresult = false then return false
注意 - 分配给 clickTransferResult 的变量应始终 = 布尔值。我不确定我做错了什么。如果结果在任何时候为假,它应该退出函数
let clickTransferTab (page: IPage, dataId: string) = async {
try
// Click Transfer tab
let! selector = Async.AwaitTask(page.WaitForSelectorAsync("div[data-id='"+dataId+"'] a.t3"))
do! Async.AwaitTask(selector.ClickAsync())
return true
with ex ->
return false
}
let doTransfer (page: IPage,
dataId: string,
transferAmount: string,
bankAccountText: string) = async {
try
let! clickTransferResult = clickTransferTab(page,dataId)
if clickTransferResult = false then return false
let! selectBankresult = clickTransferTab(page,dataId)
if selectBankresult = false then return false
let! enterTransferResult = clickTransferTab(page,dataId)
if enterTransferResult = false then return false
let! reconcilResult = clickTransferTab(page,dataId)
if reconcilResult = false then return false
return true
with ex ->
return false
}
【问题讨论】:
-
请注意,
return在 F# 中的含义与在 C# 中的含义不同。它确实会返回一个值,但不会阻止函数的其余部分运行,这就是您需要else的原因。只需要它,因为您在async计算表达式中。
标签: f#