【发布时间】:2015-12-24 21:31:55
【问题描述】:
我需要在类似于下面的情况下使用静态解析的类型参数:
[<Struct>]
type Wrapper<'T> =
val raw:'T
new(v:'T) = {raw = v}
type Value =
| Float of float
| Int of int
| String of string
with
member this.ToWrapper() :'T =
match this with
| Float f -> Wrapper<float>(f) // type is inferred as float
| Int i -> Wrapper<int>(i) // error
| String s -> Wrapper<string>(s) // error
如何定义和使用 ToWrapper 函数(或其集合),该函数可以将“值”类型映射到 Generic Wrapper 中的任何类型,我知道 'T 将是 float |整数 |字符串?
Wrapper 类型必须是 Struct,因此接口不是一个选项 - 正如与此相关的其他一些帖子中所建议的那样。
【问题讨论】:
-
这里使用静态解析的类型参数有什么意义?仅限制使用其中一种类型吗?
标签: f#