【发布时间】:2019-01-29 08:01:58
【问题描述】:
我在创建通用数学类时遇到问题(这里是非常小的示例代码,类型为 Vector 的类),但是,它的值不限于一个单一的数值数据类型,而是使用 ^F 作为 静态解析类型参数,我希望它是用户用来实例化类的任何内容,例如int,也可以是BigRational 或MyCustomNumber,只要它遵守约束即可。
type Vector< ^F> (_values : ^F []) =
let values = _values
member inline __.Dimension = Array.length values
member inline __.Item with get i = values.[i + 1]
static member inline ( * ) (a: Vector< ^F>) (scalar: ^F) =
Vector< ^F>(Array.init (a.Dimension) (fun i -> values.[i] * scalar)
override inline __.ToString() = "{" + (values.ToString()) + "}" // <--- problem-line
我现在对这段代码的问题是,我仍然不知道如何正确覆盖 Object.ToString() 方法(如何实现 IComparable,我相信我可以用同样的方法解决)。
这真的可能吗?
提前非常感谢!
【问题讨论】:
标签: f#