Scala 简单的泛型函数,不使用';不编译
请看一下Scala中的这个函数,并告诉我为什么它不能编译Scala 简单的泛型函数,不使用';不编译,scala,generics,Scala,Generics,请看一下Scala中的这个函数,并告诉我为什么它不能编译 def alternative_identity[A <: Any, B <: Any](obj: A): B = { obj } def alternative_identity[A它不会编译,因为obj是A类型的对象,并且您从返回类型为B的函数返回它 即使A和B是Any的子类型,也无法知道B是否是A的基类 例如,String和Int是Any的子类型,但它们不能互换使用。它不编译,因为obj是A类型的对象,您从返回类型
def alternative_identity[A <: Any, B <: Any](obj: A): B = {
obj
}
def alternative_identity[A它不会编译,因为obj
是A
类型的对象,并且您从返回类型为B
的函数返回它
即使A
和B
是Any
的子类型,也无法知道B
是否是A
的基类
例如,String
和Int
是Any
的子类型,但它们不能互换使用。它不编译,因为obj
是A
类型的对象,您从返回类型为B
的函数返回它
即使A
和B
是Any
的子类型,也无法知道B
是否是A
的基类
例如,String
和Int
是Any
的子类型,但它们不能互换使用。编译器应该如何知道B
是什么?函数应该返回B
,但它返回A
。它们应该具有相同的类型吗?函数应该是什么但编译器知道obj是Any的子类型,因为a是Any的子类型。然后,编译器可以推断obj满足B的要求(是Any的子类型)。这个推理有什么错?如果我调用alternative_identity[Int,Process](1)怎么办
?一个Int
怎么会神奇地变成一个过程呢?@PiotrNiedzwiedz-猴子是动物,犀牛是动物,但猴子不是犀牛。编译器怎么知道B
是什么?函数应该返回B
,但它返回a
。它们应该有同一类型?函数应该做什么?但编译器知道obj是Any的子类型,因为a是Any的子类型。然后编译器可以推断obj满足B的要求(是Any的子类型)。这种推理有什么错?如果我调用alternative_identity[Int,Process](1)怎么办
?一个Int
如何神奇地变成一个过程?@PiotrNiedzwiedz-猴子是动物,犀牛是动物,但猴子不是犀牛。