F#中的选择类型

时间:2018-03-12 05:17:48

标签: f#

我在选择构造方面遇到了一些错误,需要帮助修复代码。

错误是

  

' 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

1 个答案:

答案 0 :(得分:4)

您的Choicestringfloat,而不是stringbool

let safeDiv num den : Choice<string, float> = 

Choice1Of2Choice2Of2是构造函数,因此您不应使用=。 (为什么使用=?我无法理解)

    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

(live example)