gpt4 book ai didi

scala - 试图理解最小上限示例

转载 作者:行者123 更新时间:2023-12-01 11:32:45 24 4
gpt4 key购买 nike

鉴于以下特征和 2 个子类:

scala> trait Parent
defined trait Parent

scala> case object Kid extends Parent
defined object Kid

scala> case object Child extends Parent
defined object Child

我创建了一个返回 Kid 的函数或 Child .但是推断的返回类型是 Product with Serializable with Parent .
scala> def f(x: Int) = if (true) Kid else Child
f: (x: Int)Product with Serializable with Parent

然后,我重新编写了相同的函数,只是我显式地注释了它的类型:
scala> def g(x: Int): Parent = if (true) Kid else Child
g: (x: Int)Parent

请解释 f的推断类型。

最佳答案

Case 对象总是继承自 ProductSerializable (这是由编译器透明地完成的)。

此外这里还有KidChild明确扩展 Parent
所以两者KidChildProduct with Serializable with Parent 的子类型.
因为它们没有更多的共同类型,所以这是它们的最小上限。

关于scala - 试图理解最小上限示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com