语法 – 如何将一个基本上是元组的类型视为F#中的元组

好吧,所以让我说我有一个类似的定义:

type Foo = 
    | Bar of (SomeType * SomeType * SomeType * SomeType)
    | ...(other defs)

所以我有一个Bar,它基本上是4个SomeTypes的元组.我想访问元组的各个成员.我试过这个:

让Bar(一,二,三,四)= someBar

但是当我尝试在函数中引用一个或两个时,它表示“值或构造函数未定义”因此它不按预期处理赋值.这样做的正确方法是什么?

另外,如果我尝试:

let one,two,three,four = someBar

它抱怨说:
someBar预计会有’a *’b *’c *’d类型,但这里有类型Foo

谢谢,

您只需要添加另一组括号:

let (Bar(one,two,three,four)) = someBar

正如Stephen指出的那样,如果没有额外的parens,编译器会将这行代码视为名为Bar的新函数的定义.如果在受歧视的联盟中存在其他案例,他也是正确的,模式匹配可能更合适.

相关文章
相关标签/搜索