gpt4 book ai didi

Scala:使具体类型符合具有边界的泛型

转载 作者:行者123 更新时间:2023-12-01 07:20:06 25 4
gpt4 key购买 nike

我已经用泛型定义了一个函数,但我在理解编译器给我的错误时遇到了一些麻烦。问题可以简单地表达为:

def myfunc[T <: MyClass](param:MyClass):T = param

它在 param 上给了我这个错误在我的 body 中:MyClass 类型的表达式不符合预期的类型 T。

为什么? param适合 T 的上限。如何在不诉诸将 param 强制转换为 T 的情况下进行这样的工作?

最佳答案

好的。假设,您有以下内容:

class Animal
class Dog extends Animal

现在让我们在下面使用您的功能:
def myfunc[T <: Animal](param:Animal):T = param

现在假设,编译器不会抛出错误。来电时 myfunc[Dog](new Animal) ,它应该返回一个 Dog根据功能定义。但实际上,你只是发回 Animal .这不应该被允许。因此错误。

现在是这样:
def myfunc[T >: Dog](param:Dog):T = param

来电咨询 myfunc[Animal](new Dog) .返回类型为 Animal .但是该函数返回一个 Dog这是正确的 DogAnimal .希望它澄清

关于Scala:使具体类型符合具有边界的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13851352/

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