【问题标题】:Choice type in F#F# 中的选择类型
【发布时间】:2018-08-20 01:51:41
【问题描述】:

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

错误是

“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

【问题讨论】:

  • 不要一头扎进去,试着写出“感觉正确”的东西。你甚至没有以这种方式达到正确的语法。先阅读一些教程。我推荐fsharpforfunandprofit.com

标签: f#


【解决方案1】:

您的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)

【讨论】:

    猜你喜欢
    • 2021-04-27
    • 2015-03-22
    • 1970-01-01
    • 2019-02-15
    • 2023-04-11
    • 1970-01-01
    • 2019-08-18
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多