在scala中使用或不使用泛型类型创建实例有什么不同?
问题描述:
我有一个类定义和两个函数定义在scala中使用或不使用泛型类型创建实例有什么不同?
class Queue[T] (
private val leading: List[T]
private val trailing: List[T]
){}
def a[T](xs: T*) = new Queue[T](xs.toList, Nil)
def b[T](xs: T*) = new Queue(xs.toList, Nil)
从这里,类与泛型类型定义,以及两个函数的作用。
但是在这里,两个函数的区别在于创建实例时。
工作都很好,没有错误与下面的表达式创建:
a(1,2,3,4)
b(1,2,3,4)
a[Int](1,2,3,4)
b[Int](1,2,3,4)
但是,我想不出有什么区别。
答
没有。类别Queue
的类型参数T
将被推断为方法b
的类型参数T
。
如果您为'Queue'和'b'的类型参数选择了不同的名称,谈论这个会容易一些。 –