0 | _ wh-6ren">
gpt4 book ai didi

使用 "when"时,此表达式上的 F# 不完整模式匹配......为什么?

转载 作者:行者123 更新时间:2023-12-03 23:34:01 25 4
gpt4 key购买 nike

我有这个简单的 F# 函数:

let compareNum x =
let y = 10
match x with
| _ when x = y -> 0
| _ when x > y -> 1
| _ when x < y -> -1

但是,F# 编译器给了我“此表达式上不完整的模式匹配”警告。在这种情况下,所有情况都应涵盖所有模式。

我还在 Chris Smith 编写的 Programming F# 书籍第一版的“模式匹配”部分中看到了一个类似的示例。那么在更高版本的 F# 中可能会有所改变吗?

最佳答案

我想答案the previous question (和 the comments -- “一般来说,在最后一个模式中有一个 when 守卫是一种反模式” -- by kimsk )解释这种情况。

但是,我不会说在最后一个模式中使用守卫是一种反模式——这是最简单的解决方法,但我觉得这有点不幸,因为 when模式为您提供了有关您可以预期的值的有用信息 - 这使您更容易理解程序。上次我遇到这个问题时,我把它留在那里,至少作为评论:

let compareNum x =
let y = 10
match x with
| _ when x = y -> 0
| _ when x > y -> 1
| _ (*when x < y*) -> -1

关于使用 "when"时,此表达式上的 F# 不完整模式匹配......为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com