Crystal lang: Тип арифметики, принадлежит Союзу?

Я пытаюсь реализовать функцию:

def foo(t : Class)
    if t in Int::Signed
        # ...
    end
end

Но как реализовать t in Int::Signed? Где Int:: Подписано

я знаю is_a?(Int::Signed) но здесь параметр имеет тип Type, Благодарю.

1 ответ

Решение
def foo(t : Class)
  if t < Int::Signed
    # ...
  end
end

Class#< добавляется только в Crystal 0.25, если я не ошибаюсь, поэтому убедитесь, что вы обновляете, если он не работает для вас. Существует также Class#<= что бы вернуться true за Int::Signed <= Int::Signed,

Другие вопросы по тегам