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