gpt4 book ai didi

scala - 如何说类型参数必须具有一个替代父类(super class)型的一个父类(super class)型?

转载 作者:行者123 更新时间:2023-12-04 13:42:15 24 4
gpt4 key购买 nike

可以说类型参数T必须具有特定的父类(super class)型S_1:

class Test[T <: S_1] 

有没有一种说法,类型参数必须至少具有多个父类(super class)型替代的一个父类(super class)型?
类似于(伪代码)的东西:
class Test[T <: S_1 || S_2] 

或者:这是不可能的,因为这样的构造是没有意义的,并且暗示了代码中的设计错误?

最佳答案

简短答案:直观的解决方案是使S_1S_2共享一个共同的特征,该特征代表您为类型参数T所需的一组功能。使用该特征作为T的上限。

更多可能性:

  • 如果S_1S_2本质上不相关,并且您对T类型的要求是它具有某些成员(S_1S_2都实现了),则可以使用structural type来表述(后面的概念称为duck typing)。
  • 如果出于某种原因您确实需要T作为S_1S_2的子类,并且不能更改这些类型,则可以使用隐式将这两种类型都转换为新引入的内部类型S_1_or_2,然后将其用作T的上限。
  • 关于scala - 如何说类型参数必须具有一个替代父类(super class)型的一个父类(super class)型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11075213/

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