我正在尝试实现一个通用优先级队列容器类,其中要存储的元素必须具有排序属性。现在我有
class PriorityQueue(T)
...
end
当我创建PriorityQueue(Int32)
到PriorityQueue(String)
的地方创建PriorityQueue(Foo)
,Foo
或include Comparable(Foo)
时,此方法有效,但是我想知道是否有办法让PriorityQueue
类声明T
的必须为Comparable
。
答案 0 :(得分:2)
否,Crystal当前(从0.31开始)不支持限制自由变量的类型。正在https://github.com/crystal-lang/crystal/issues/934
上讨论此功能同时,正如您所指出的,它仍然可以通过使用Ruby样式(通过仅调用所需的方法来期望接口)而起作用,只是由此产生的错误消息可能有点难以理解。