kim*_*msk 13 f# pattern-matching guard-clause
我有这个简单的F#功能:
let compareNum x =
let y = 10
match x with
| _ when x = y -> 0
| _ when x > y -> 1
| _ when x < y -> -1
Run Code Online (Sandbox Code Playgroud)
但是,F#编译器给出了"此表达式上的不完整模式匹配"警告.在这种情况下,所有案例都应涵盖所有模式.
我还在Chris Smith的第1版Programming F#book中的"Pattern Matching"部分看到了一个类似的例子.所以在F#的后期版本中可能会改变某些内容?
Tom*_*cek 18
我认为前一个问题的答案(以及评论 - "一般情况下,在最后一个模式中有一个守卫的反模式" - 由kimsk解释).
但是,我不会说在最后一个模式中有一个后卫是一个反模式 - 这是最简单的解决方法,但我发现这有点不幸,因为该when模式为您提供有关您可以预期的值的有用信息 - 这使得更容易理解程序.上次我有这个问题,我把它留在那里,至少作为评论:
let compareNum x =
let y = 10
match x with
| _ when x = y -> 0
| _ when x > y -> 1
| _ (*when x < y*) -> -1
Run Code Online (Sandbox Code Playgroud)