如何在F#中正确返回记录类型对象?解决FS0740编译错误
F# FS0740错误的解决方法
你的代码触发FS0740错误的核心原因是代码中的小于号被替换成了HTML实体<,这不是有效的F#语法,导致编译器无法正确解析条件表达式,进而误判后续的记录表达式格式错误。
修正后的代码
// functions that return a record type opResult = {value:float; op: string} let doMath (arg1:float, arg2:float) = let r = if arg1 < 0 || arg2 < 0 then {value=-1.0; op="invalid"} else {value=arg1+arg2; op="add"} r // let result = doMath (4.1, 5.9) printfn $"result={doMath (4.1, 5.9)}"
关键修正说明
- 必须将代码中的
<替换为F#原生支持的小于号运算符<,这是解决语法错误的核心 - 可选优化:在记录字段的分号后添加空格(如
; op="invalid"),虽然不是语法强制要求,但能提升代码可读性,避免潜在的解析歧义
修正后编译器就能正确识别记录类型与条件逻辑,返回预期的opResult记录值。
内容的提问来源于stack exchange,提问作者Peter M.
相关产品推荐
相关产品推荐

