在比赛中匹配?

时间:2013-09-09 00:47:03

标签: f#

有没有办法在F#的比赛中进行比赛?我注意到你可以像其他人一样做尾巴...

match L.Head with
| null -> []
| _ -> match N with
| 1 -> [L.Head]
| _ -> []

但有没有办法做到这一点,以_结尾的匹配可以放在另一场比赛的MIDDLE中?这似乎给了一个错误...有没有更好的方法来做到这一点,你需要它为你的逻辑吗? EX:

match A with
| 0 -> match B with
       | 1 -> 1
       | _ -> 0
| _ -> 2

2 个答案:

答案 0 :(得分:7)

为什么不在元组上使用匹配 -

match (A,B) with
|0,1 -> 1
|0,_ -> 0
|_,  -> 2

答案 1 :(得分:0)

不确定 7 年前是否可行,但现在您可以使用 struct 来减少分配:

match struct (A, B) with
| 0, 1 -> 1
| 0, _ -> 0
| _    -> 2

旧答案会创建 System.Tuple`2 的实例,而这会创建 System.ValueTuple`2 的实例 Decompilation