【发布时间】:2017-11-12 22:53:13
【问题描述】:
我有一个应用程序,它可以渲染钢琴谱,因此我必须将一些乐谱概念抽象到唱片结构中。为了节省一些输入,我有时会在某些记录类型中添加成员 FromTuple。
我还介绍了运算符!>,它接受一个元组并返回相应的元组。
但是我确实有以下问题:
FS0332:无法解决在此程序点处或附近使用运算符“FromTuple”所固有的歧义。考虑使用类型注释来解决歧义。
我无法找到错误的实际来源(我最初认为某些记录字段名称可能在多种记录类型中定义/使用,但似乎并非如此)。
类型定义:
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)
故障线(在单独的文件中):
//ERROR
let my_xyz : xyz = !> (315, false, ("foo", "bar"))
【问题讨论】:
标签: generics f# operator-overloading constraints