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

时间:2017-12-16 17:45:22

标签: 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: Int): Alphabet = {
    var prod = new Alphabet
    for (i <- 1 to n) 
      prod *= this
    prod
  }

}

但是Scala IDE告诉我第3行(类字母......)&#34; class Alphabet需要是抽象的,因为:它有4个未实现的成员&#34;我该怎么办?我是这种语言的初学者

1 个答案:

答案 0 :(得分:0)

扩展类或特征时,需要实现其抽象(&#34;未实现的&#34;)成员(包括其继承的抽象成员)。如果您正在扩展for (auto p = std::make_unique<std::vector<int>>(std::vector<int>({1, 2, 3, 4, 5})); auto it : *p) std::cout << it << std::endl; ,则必须实现Scala可变集合应具有的功能,即(在您的情况下):

mutable.Set

// 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 应该为Set构造一个迭代器,因此可以迭代它。

iterator应该检查该集合是否存在contains,在您的情况下是一个字符串。

elem应删除指定的-=并返回elem

Alphabet应将+=添加到集合中并返回字母。

您可以在GenSetLikeSetLikemutable.SetLike的文档中找到更多信息。