当我使用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>();
感谢
答案 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的声明网站差异。