Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.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_Inheritance_Constructor - Fatal编程技术网

scala上存在继承和构造函数问题的类实现

scala上存在继承和构造函数问题的类实现,scala,inheritance,constructor,Scala,Inheritance,Constructor,对于计算理论,我想做一个如下的课程 import scala.collection.mutable class Alphabet extends mutable.Set[String] { def *(that: Alphabet): Alphabet = { var prod = new Alphabet for (x <- this; y <- that) prod += (x + y) prod } def pow(n: I

对于计算理论,我想做一个如下的课程

import scala.collection.mutable

class Alphabet extends mutable.Set[String] {

  def *(that: Alphabet): Alphabet = {
    var prod = new Alphabet
    for (x <- this; y <- that)
      prod += (x + y)
    prod
  }

  def pow(n: Int): Alphabet = {
    var prod = new Alphabet
    for (i <- 1 to n) 
      prod *= this
    prod
  }

}

但是Scala IDE告诉我第3行的类字母表。。。类字母表需要是抽象的,因为:它有4个未实现的成员,我应该怎么做?我是这门语言的初学者

当您扩展一个类或特性时,您需要实现它的抽象未实现成员,包括继承的抽象成员。如果要扩展mutable.Set,则必须实现Scala可变集所需的函数,即:

// Members declared in scala.collection.GenSetLike
def iterator: Iterator[String]

// Members declared in scala.collection.SetLike
def contains(elem: String): Boolean

// Members declared in scala.collection.mutable.SetLike
def -=(elem: String): Alphabet
def +=(elem: String): Alphabet
迭代器应该为集合构造一个迭代器,以便对其进行迭代

contains应该检查集合中是否存在元素,在您的例子中,元素是字符串

-=应删除给定元素并返回字母表

+=应向集合中添加元素并返回字母表


您可以在的文档中找到更多信息,并且。

右键单击错误,它将告诉您该怎么做。。。通常,在scala中,扩展集合和使用可变集合几乎总是不想做的事情,顺便说一句,这听起来好像你太快就开始编码了。也许,先读一本初学者的书是有意义的?没有办法纠正我的错误。我一直在看书,但我从来没有发现一个类扩展集合的例子,因为在Scala中这不是一个好主意,所以你说。。。。我应该将集合作为字段还是从其他集合进行扩展?你有什么建议吗?你的问题与扩展集合无关。只要在书中查找有关继承的章节,并阅读抽象方法。至于我的建议,是的,使用集合作为变量听起来是正确的。好的,我解决了我的问题,这是正确的Scala方法吗?我不觉得调用实例变量在Scala中是正确的。谢谢你的建议。你不需要getSigma,只要把sigma公之于众就行了。而且,几乎所有使用var的方法都不是真正正确的scala方法。假设var和可变容器暂时不存在,直到您对该语言有足够的感觉,能够告诉1%的情况下真正需要它们。Oye hermano y?como las implementaría?他打算在今年的超级联赛中击败乌桑多·拉斯帕拉布拉斯,并与瓦里亚斯和纳达联手。他提出了一个问题,这个问题是一个非常复杂的问题,他提出了一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,一个问题,在面向对象编程书籍中,继承的主题通常占据完整的章节。我建议你读一读,这样你就可以对extends、override、this和super有一个比我用几百个字符就能写的更好的解释。我的意思是,这是最好的方式,因为这是未来更先进的东西的先决条件。