Могут ли модули использоваться как ограничения типа? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь реализовать общий контейнерный класс очереди приоритетов, где элементы, которые будут сохранены, должны иметь свойство упорядочения. Прямо сейчас у меня есть

class PriorityQueue(T)
    ...
end

Это работает, когда я создаю PriorityQueue(Int32), PriorityQueue(String) или PriorityQueue(Foo), где я реализую Foo до include Comparable(Foo), но мне интересно, есть ли способчтобы класс PriorityQueue объявил, что T должен быть Comparable.

1 Ответ

2 голосов
/ 10 октября 2019

Нет, в настоящее время Crystal (по состоянию на 0,31) не поддерживает ограничение типов свободных переменных. Эта функция обсуждается на https://github.com/crystal-lang/crystal/issues/934

Между тем, как вы заметили, она по-прежнему работает, используя стиль Ruby для ожидания интерфейса, просто вызывая нужные вам методы, просто сообщения об ошибках, создаваемые этимможет быть немного трудно понять.

...