col*_*ang 3 f# pattern-matching
type A =
{
...
id: int;
...
}
Run Code Online (Sandbox Code Playgroud)
我希望我能做到这一点
let Add (x:A) (y:A) =
match x,y with
| {x.id=0,y.id=1} -> ...
Run Code Online (Sandbox Code Playgroud)
如果我不关心顺序x
和y
(以便函数是对称的),有没有任何技巧来定义函数我也不介意参数是tuple (x,y)
一个更高阶函数还是更高阶函数x,y
t0y*_*yv0 12
另一种语法是:
let add x y =
match x, y with
| {id = 0}, {id = 1} | {id = 1}, {id = 0} -> ..
| _ -> ..
Run Code Online (Sandbox Code Playgroud)
请参阅http://msdn.microsoft.com/en-us/library/dd547125.aspx上的"记录模式"部分.