scala中的通用列表

时间:2018-01-13 20:12:40

标签: scala generics

当我使用Java时,我能够使用约束,协变,逆变等创建通用列表。

List<? extends Chat> chats=new ArrayList<Siamois>(); ...

但是我知道我必须在Scala中工作,我使用了方法和类的约束:

def addToList[T <: Chat](t:T):List[T]=List[T](t)

但事实上有没有办法在Scala中编写这些java行?

 List<? extends Chat> chats=new ArrayList<Siamois>();
List<? super Siamois> siamois2=new ArrayList<Chat>();

感谢

1 个答案:

答案 0 :(得分:3)

字面翻译将是

var strings = [
  "test 12% test",
  "test 12 % test",
  "test 12%   test",
  "test 1.2% test",
  "test 1.2%,test",
  "test (1.2%) test",
  "test 1.2%"
];

for (var i = 0; i < strings.length; i++) {
  console.log(strings[i] + "-> " + strings[i].replace(/\(?\d+(?:\.\d+)? ?%\)? */g, ""));
}

但请注意,Scala标准库中的不可变import java.util.{List, ArrayList} val chats: List[_ <: Chat] = new ArrayList[Siamois] val siamois2: List[_ >: Siamois] = new ArrayList[Chat] 根据定义是协变的。在惯用的Scala代码中,您不需要使用站点方差。您可能希望了解Scala的声明网站差异。