可以将模块用作类型限制吗?

时间:2019-10-09 23:40:29

标签: crystal-lang

我正在尝试实现一个通用优先级队列容器类,其中要存储的元素必须具有排序属性。现在我有

class PriorityQueue(T)
    ...
end

当我创建PriorityQueue(Int32)PriorityQueue(String)的地方创建PriorityQueue(Foo)Fooinclude Comparable(Foo)时,此方法有效,但是我想知道是否有办法让PriorityQueue类声明T的必须为Comparable

1 个答案:

答案 0 :(得分:2)

否,Crystal当前(从0.31开始)不支持限制自由变量的类型。正在https://github.com/crystal-lang/crystal/issues/934

上讨论此功能

同时,正如您所指出的,它仍然可以通过使用Ruby样式(通过仅调用所需的方法来期望接口)而起作用,只是由此产生的错误消息可能有点难以理解。