Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不能编译这个简单的scala示例?_Scala - Fatal编程技术网

为什么不能编译这个简单的scala示例?

为什么不能编译这个简单的scala示例?,scala,Scala,无法编译,错误为: class X extends Map[String, String] { def x(): X = { X() } // can't be compiled } 尝试新的X而不是X-你会得到另一个错误,但我相信它会让你走上正确的轨道 在后一种情况下,它试图调用由X表示的表达式apply,例如,想象其中X被定义为object X或val X,而不是试图调用类X的构造函数 愉快的编码。不清楚您想做什么,但它不编译的原因是没有名为“X”的字段、函数或方法,也没有带有“a

无法编译,错误为:

class X extends Map[String, String] {
    def x(): X = { X() } // can't be compiled
}
尝试新的X而不是X-你会得到另一个错误,但我相信它会让你走上正确的轨道

在后一种情况下,它试图调用由X表示的表达式apply,例如,想象其中X被定义为object X或val X,而不是试图调用类X的构造函数


愉快的编码。

不清楚您想做什么,但它不编译的原因是没有名为“X”的字段、函数或方法,也没有带有“apply”方法的模块“X”

如何纠正


明确你想要达到的目标。

我可以建议你尝试不同的方法吗

扩展集合库是在Scala中可以做的更高级的事情之一。为了正确地完成这项工作,您需要深入了解更高级的类型、推理、变异、隐式以及CanBuildFrom机制。对于初学者来说,这不是一项轻松的任务

另一方面,你真的需要扩展一个收藏是非常罕见的

回到第一原则。。。您试图解决的问题是什么?您认为正确的方法是扩展HashMap?我几乎可以保证,在Scala中有更好的方法来实现这一点

更新Mk.II


这个答案之前包含了收集框架的描述。根据@soc的建议,我现在将答案的这一部分迁移到一个

谢谢。你能告诉我怎么正确地做吗?我是scala的新手,刚刚尝试了很多。谢谢你的建议。我发现很难使用扩展HashMap的类与其他类一起工作,所以我放弃了。我是个新手,不能再多问你了。让我花更多的时间来学习scala。再次感谢,非常好。把这个当做一个“FAQ问题”——它被埋葬在这个帖子里。@ SoC——更好的是,我将收集我所有关于堆栈溢出的答案,把它们放在一本书中:伟大的答案,但次要的文体NITSCOPY:在一个段落中,你简单地说忽略XXXXY特性。该层次结构中的每一层都添加了一点功能,但在下一段中,将描述TraversableLike如何实现映射。听起来你首先说的是xxxLike特征中没有重要的功能,但随后直接反驳了这一说法。也就是说。。。干得好,先生~凯文·赖特(Kevin Wright)对该系列有着非常好的回复。考虑创建另一个这样的问题,只关注扩展/创建Scala 2.8的集合,特别是向UNN埋葬它。@ PST,好的建议,但是现在,我对Scala太新了,我甚至不知道如何问这个问题。
<console>:6: error: not found: value X
def x(): X = { X() } // can't be compiled
import scala.collection.immutable.HashMap
class X extends HashMap[String, String] {
    def x(): X = { new X() }
}