在我的新水晶项目中,我有一个类,它以几种不同的方式存储它的数据,这些方式对我来说很有用,都是哈希 .
getter isometry_cardinality : Hash(IsometryKind, Int8)
getter axis_cardinality : Hash(Directions::Orientation, Array(IsometryKind))
我想基于它使用的哈希来重载我的方法:
private def has_min_cardinality?(parent_cardinality : Hash(IsometryKind, Int8))
...
end
private def has_min_cardinality?(parent_cardinality : Hash(Directions::Orientation, Array(IsometryKind))
...
end
正如你所看到的,这个宣言已经很长了 . 是否有一些方便的方法来缩短它?例如,我可以将getter用作其类型的别名吗?
private def has_min_cardinality?(parent_cardinality : isometry_cardinality)
...
end
private def has_min_cardinality?(parent_cardinality : axis_cardinality)
...
end
对于那个具体的例子,答案是'no',所以我的问题是:我错过了正确的方法吗?
1 回答
是的,还有更好的方法:alias来救援!
您可以为此示例中的复杂类型添加别名并使用别名,编译器只需完全替换它,因此不会降低性能 .
这是一个演示:https://play.crystal-lang.org/#/r/4hoh