class X extends Map[String, String] {
def x(): X = { X() } // can't be compiled
}
Run Code Online (Sandbox Code Playgroud)
无法编译,错误是:
<console>:6: error: not found: value X
def x(): X = { X() } // can't be compiled
Run Code Online (Sandbox Code Playgroud)
为什么找不到X?我看不出如何纠正它.
更新:
我现在知道原因.我想要做的是创建一个扩展的类HashMap,因为Map()它将返回一个实例HashMap,所以我想我可以扩展Map.现在,正确的代码应该是:
import scala.collection.immutable.HashMap
class X extends HashMap[String, String] {
def x(): X = { new X() }
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*ght 13
我可以建议您尝试不同的方法吗?
扩展集合库是您可以在Scala中执行的更高级的操作之一.要正确地完成工作,您需要深入了解更高级的类型,推理,方差,隐含和CanBuildFrom机制.这不是一个初学者要采取的轻松任务.
另一方面,你实际上需要扩展一个集合是非常罕见的.
回到第一原则......你认为正确的方法是扩展的,你试图解决什么问题HashMap?我几乎可以保证在Scala中有更好的方法.
更新Mk.II
这个答案以前包含了对集合框架CanBuildFrom逻辑的描述.根据@ soc的建议,我现在已将这部分答案迁移到常见问题解答中
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |