滥用模式匹配
Abusing pattern matching
我来自 C#,发现自己爱上了 F# 模式匹配语法,因为它比 C# switch
更简单,而且更有用。我喜欢尽可能多地使用它,像这个例子那样以奇怪的方式使用它是否有性能或任何其他缺点?
match 0 with
|_ when a<b -> a
|_ -> b
在此特定示例中,不会有性能损失。在其他情况下也很可能不会出现性能损失,但要绝对确保您必须使用 ILSpy 之类的工具查看生成的代码。
我还必须补充一点,当您使用 F# 时,您会发现 if/then/else
也非常好。在C#中,if/else
感觉有点尴尬,因为它不能用作表达式,但在F#中不是这样,所以尴尬很快就消失了。
let x = if a < b then a else b
它甚至读起来像简单的英语! :-)
我来自 C#,发现自己爱上了 F# 模式匹配语法,因为它比 C# switch
更简单,而且更有用。我喜欢尽可能多地使用它,像这个例子那样以奇怪的方式使用它是否有性能或任何其他缺点?
match 0 with
|_ when a<b -> a
|_ -> b
在此特定示例中,不会有性能损失。在其他情况下也很可能不会出现性能损失,但要绝对确保您必须使用 ILSpy 之类的工具查看生成的代码。
我还必须补充一点,当您使用 F# 时,您会发现 if/then/else
也非常好。在C#中,if/else
感觉有点尴尬,因为它不能用作表达式,但在F#中不是这样,所以尴尬很快就消失了。
let x = if a < b then a else b
它甚至读起来像简单的英语! :-)