F#中的选择类型

App*_*015 2 f#

我在选择结构上遇到一些错误,需要帮助修复代码。

错误是

“ 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)

ikh*_*ikh 5

Choicestringfloat,没有stringbool

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)

(实时示例)