Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics F#通用约束因“原因”而不起作用;“歧义”;_Generics_F#_Operator Overloading_Constraints - Fatal编程技术网

Generics F#通用约束因“原因”而不起作用;“歧义”;

Generics F#通用约束因“原因”而不起作用;“歧义”;,generics,f#,operator-overloading,constraints,Generics,F#,Operator Overloading,Constraints,我有一个应用程序,它呈现钢琴乐谱,因此我必须将一些乐谱概念抽象到唱片结构中。为了保存一些输入,我有时会将成员FromTuple添加到一些记录类型中。 我还介绍了操作员!>,它接受一个元组并返回相应的元组。 不过,我有以下问题: FS0332:无法解决在此程序点或其附近使用运算符“FromTuple”时固有的歧义。考虑使用类型注释来解决歧义。< /P> 我找不到错误的实际来源(我最初认为一些记录字段名可能在多个记录类型中定义/使用,但情况似乎并非如此) 类型定义: type xyz =

我有一个应用程序,它呈现钢琴乐谱,因此我必须将一些乐谱概念抽象到唱片结构中。为了保存一些输入,我有时会将成员
FromTuple
添加到一些记录类型中。
我还介绍了操作员
!>,它接受一个元组并返回相应的元组。
不过,我有以下问题:

FS0332:无法解决在此程序点或其附近使用运算符“FromTuple”时固有的歧义。考虑使用类型注释来解决歧义。< /P> 我找不到错误的实际来源(我最初认为一些记录字段名可能在多个记录类型中定义/使用,但情况似乎并非如此)


类型定义:

type xyz =
    {
        // some record fields
        Field1 : int
        Field2 : bool
        Field3 : string * string
    }
    with
        static member FromTuple (a, b, c) = { Field1 = a; Field2 = b; Field3 = c }

// more types defined like `xyz`

[<AutoOpen>]
module Globals =
    let inline (!>) x = (^b : (static member FromTuple : ^a -> ^b) x)

您的
xyz.FromTuple
方法采用三个单独的参数:
a:int
b:bool
c:string*string
;相反,您需要它获取一个
int*bool*(string*string)
。通过将参数包装在另一组括号中来执行此操作:

static member FromTuple ((a, b, c)) = { Field1 = a; Field2 = b; Field3 = c }
static member FromTuple ((a, b, c)) = { Field1 = a; Field2 = b; Field3 = c }