想办法从 2 小时中减去 5 分钟。
从 2 中减去 5 是没有意义的,因为我们最终会得到 -3 通用时间单位,这是没有用的。但如果“小时”是“分钟”的子类型,我们可以将 2 小时转换为 120 分钟,得到 115 分钟或 1 小时 55 分钟。
同样,如果我们想将 5 个苹果加到 5 个橙子中,我们不能用苹果来评估它,但可能会得到 10 个水果。
在上面的例子中,通常当使用数字作为形容词时,整数需要通过它们描述的对象类型来参数化。我认为如果不是声明,那将非常有用
val hours = 2
val minutes = 5
你可以做类似的事情
val hours = 2[Hour]
val minutes = 5[Minute]
val result = hours - minutes
assert (result == 115[Minute])
是否存在这样的事情,是否有用,是否可以实施?
编辑:澄清一下,上面的时间示例只是我想到的一个随机示例。我的问题更多的是参数化数值的概念是否是一个有用的概念,就像你有参数化列表等一样。(答案可能是“不”,我不知道!)