滥用模式匹配

Pre*_*za8 6 f# pattern-matching

我来自C#,发现自己爱上了F#模式匹配语法,因为它比C#更简单switch,更有用.我喜欢尽可能地使用它,是否有表现或任何其他缺点,以这种例子中的奇怪方式使用它?

match 0 with
|_ when a<b -> a
|_ -> b
Run Code Online (Sandbox Code Playgroud)

Fyo*_*kin 6

在这个特定的例子中,不会有性能损失.在其他情况下,很可能也不会出现性能损失,但绝对确定您必须使用ILSpy之类的东西来查看生成的代码.

我还必须补充一点,当你使用F#时,你会发现它if/then/else也非常好.在C#中,if/else感觉有点尴尬,因为它不能用作表达式,但在F#中并非如此,因此尴尬很快就会消失.

   let x = if a < b then a else b
Run Code Online (Sandbox Code Playgroud)

它甚至看起来像普通英语!:-)