gpt4 book ai didi

f# - F# 是否支持模板或泛型?

转载 作者:行者123 更新时间:2023-12-01 06:21:00 26 4
gpt4 key购买 nike

我想实现一个堆数据结构,并希望将代码应用于任何支持比较的类型,即 < = > <= >= 操作。

如何在 F# 中执行此操作,因为它是静态类型的。

最佳答案

确实如此,但您必须注释如下:

type Thing<'a when 'a:comparison> =
| Pair of ('a*'a)
with
member m.InOrder() =
match m with
| Pair (a,b) when a<=b -> true
| _ -> false
member m.Equal() =
match m with
| Pair (a,b) when a=b -> true
| _ -> false

Pair(1,2).InOrder() //true
Pair(3,2).InOrder() //false
Pair(42,42).Equal() //true

尝试更换 Thing<'a when 'a:comparison>来自 Thing<'a when 'a:equality>观看 InOrder()方法失败,而 Equal()仍然有效。替换 Thing<'a when 'a:comparison>来自 Thing<'a>并且这两种方法都行不通。

关于f# - F# 是否支持模板或泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com