2014-01-27 83 views
2

F#通過模式匹配來分配函數參數。這就是爲什麼通過函數調用進行模式匹配

// ok: pattern matching of tuples upon function call 
let g (a,b) = a + b 
g (7,4) 

作品:元組與匹配(A,B),A和B都可以直接在F。

這樣帶有歧視性的工會同樣也同樣是有利的,但我不能得到它做:

// error: same with discriminated unions 
type A = 
    | X of int * int 
    | Y of string 

let f A.X(a, b) = a + b // Error: Successive patterns 
         // should be separated by spaces or tupled 

// EDIT, integrating the answer: 
let f (A.X(a, b)) = a + b // correct 

f (A.X(7, 4)) 

是模式匹配的函數調用僅限於元組的一部分嗎?有沒有辦法與歧視工會做到這一點?

回答

5

你需要額外的括號:

let f (A.X(a, b)) = a + b 
+0

賓果!我確信我嘗試了這個alrady。謝謝 – citykid