我在选择构造方面遇到了一些错误,需要帮助修复代码。
错误是
' if'表达需要有类型'选择'满足上下文类型要求。它目前有类型' 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
答案 0 :(得分:4)
您的Choice
有string
和float
,而不是string
和bool
。
let safeDiv num den : Choice<string, float> =
Choice1Of2
和Choice2Of2
是构造函数,因此您不应使用=
。 (为什么使用=
?我无法理解)
if den = 0. then
Choice1Of2 "divide by zero"
else
Choice2Of2 (num / den)
然后,您应该进行模式匹配以打印Choice
。
match safeDiv 15. 3. with
| Choice1Of2 msg -> printfn "%s" msg
| Choice2Of2 x -> printfn "%f" x