我找不到关于此的文档。我需要将Discriminated Union值分解为一些组件,但我也需要在函数体内将该项作为一个整体使用。
我可以let matcher = function MyDU(_,b,_) -> b
或let extractor MyDU(_,b,_) = b
但如果我还需要{My}值的引用,例如... -> RedundantWrapper(myDU, b)
我试过了:
let extractor myDU =
let MyDU(_,b,_) = myDU
RedundantWrapper(myDU, b)
但我不认为这是正确的语法。也许我可以用更长的时间做这件事,但似乎会有一个短暂的方式。
谢谢!
答案 0 :(得分:3)
像这样:
let (Some(x) as o) = Some 1
// val o : int option = Some 1
// val x : int = 1
答案 1 :(得分:0)
另外,我刚才意识到这个简短的手是允许的,我认为这里的每个人都会同意这是非常棒的。
let extractor (myDU & MyDU(_,b,_)) =
RedundantWrapper(myDU, b)