【发布时间】:2021-08-19 15:53:27
【问题描述】:
我想添加类型约束,如下所示。当我这样做时,我得到了错误
error FS0698: Invalid constraint: 用于约束的类型是密封的,这意味着约束只能由最多一种解决方案满足
type PropertyValue<'T when 'T :> System.Int16 and 'T :> System.String> =
| Single of 'T
| Array of 'T[]
这就是我想要做的。
type PropertyValueInfo =
| String of string
| Int of int
| StringArray of string[]
| IntArray of int[]
在我们的域中,用户可以定义属性,属性可以是字符串、整数或字符串和整数的数组版本。我试图在一般意义上对此进行建模,以便将来我可以添加双精度类型。
【问题讨论】:
-
不能有类型
'T是Int16和String的子类型。 -
您能详细说明您想要实现的目标吗?例如,您的问题的具体情况是什么。为什么你的属性值不能有不同的类型,例如Int 属性,字符串属性?
-
你也不能子类型
Int16。 -
感谢 Fyodor、Koenig 和 Phillip 的快速回复。这就是我想要做的。
type PropertyValueInfo = | String of string | Int of int | StringArray of string[] | IntArray of int[]
在我们的域中,用户可以定义属性,属性可以是字符串、整数或字符串和整数的数组版本。我试图在一般意义上对此进行建模,以便将来我可以添加双重类型。希望这是有道理的。谢谢