我在选择结构上遇到一些错误,需要帮助修复代码。
错误是
“ if”表达式需要具有“ Choice”类型才能满足上下文类型要求。目前它的类型是'bool'。
let safeDiv num den : Choice<string, bool> =
if den = 0. then
Choice1Of2 = "divide by zero"
else
Choice2Of2 = (num/den)
printfn "%s" (safeDiv 15. 3.).Choice1Of2
Run Code Online (Sandbox Code Playgroud)
您Choice有string和float,没有string和bool。
let safeDiv num den : Choice<string, float> =
Run Code Online (Sandbox Code Playgroud)
Choice1Of2并且Choice2Of2是构造函数,因此您不应使用=。(为什么使用=?我听不懂)
if den = 0. then
Choice1Of2 "divide by zero"
else
Choice2Of2 (num / den)
Run Code Online (Sandbox Code Playgroud)
然后,您应该进行模式匹配以打印的内容Choice。
match safeDiv 15. 3. with
| Choice1Of2 msg -> printfn "%s" msg
| Choice2Of2 x -> printfn "%f" x
Run Code Online (Sandbox Code Playgroud)