水晶郎:类型算术,属于联盟?

我正在尝试实现一个功能:

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

但是如何实现 t in Int::SignedInt::Signed

我知道 is_a?(Int::Signed) 但这里的参数类型为 Type . 谢谢 .

回答(1)

3 years ago

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

Class#< 仅在Crystal 0.25中添加,如果我没有记错的话,请确保如果它不适合你就更新 . 还有 Class#<= 将为 Int::Signed <= Int::Signed 返回 true .