44
|
Jean-Philippe Pellet · 技术社区 · 14 年前 |
1
58
这是什么
如您所见,setoption返回实际使用的类型,而不是abstract0。如果混凝土0
更新:在评论中回答JPP的后续问题(如何返回新实例: 问题中描述的一般方法是正确的方法(使用抽象类型)。但是,对于每个子类,新实例的创建需要是明确的。 一种方法是:
另一个方法是遵循scala集合库中使用的构建器模式。也就是说,setoption接收一个隐式构建器参数。这样做的好处是,构建新实例可以使用更多的方法,而不仅仅是“复制”,而且可以完成复杂的构建。例如,setSpecialOption可以指定返回实例必须是SpecialConcrete。 下面是解决方案的示例:
更新2: 回复JPP的第二条评论。对于多个层次的嵌套,使用类型参数而不是类型成员,并将abstract0转换为特征:
|
2
4
这是
|
davidzxc574 · 将字符串缩放为字符 2 年前 |
yic_l · 什么是“!”在这个函数中是什么意思? 2 年前 |
Jelly · Scala:用于理解递归未来 2 年前 |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 2 年前 |
Iheb Mar · 卡夫卡制作人/消费者粉碎每一秒的API调用 2 年前 |
B. Bal · 在Scala中重用类成员 2 年前 |