3
爲什麼此代碼無效,以及如何使其工作?當守衛在模式匹配中使用分組模式時,F#倍數
let id1 = 0
match p1, p2 with
| Fluid, Particle id2 when id = id2
| Interface _, Particle id2 when id = id2 -> doSomething()
...
那麼有可能有幾個當模式組的衛兵?
爲什麼此代碼無效,以及如何使其工作?當守衛在模式匹配中使用分組模式時,F#倍數
let id1 = 0
match p1, p2 with
| Fluid, Particle id2 when id = id2
| Interface _, Particle id2 when id = id2 -> doSomething()
...
那麼有可能有幾個當模式組的衛兵?
只能有一個當每個箭頭/結果後衛,所以像這樣的工作:
let id1 = 0
match p1, p2 with
| Fluid, Particle id2
| Interface _, Particle id2 when id1 = id2 -> doSomething()
| _ -> doSomething()
(注意在這種情況下,在這兩個項目還是必須綁定同一組標識符使在這兩種情況下沒有IDENTIFER留下未初始化)
或可選擇地添加第二個動作/結果:
match p1, p2 with
| Fluid, Particle id2 when id1 = id2 -> doSomething()
| Interface _, Particle id2 when id1 = id2 -> doSomething()
| _ -> doSomething()
謝謝您的回答。知道何時警衛對模式組中的所有案件有效是很好的事情。 – 2010-07-28 09:17:33