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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在scala上继承和构造函数问题的类实现相关的知识,希望对你有一定的参考价值。

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

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

iterator应该为Set构造一个迭代器,因此可以迭代。

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

-=应删除给定的elem并返回Alphabet

+=应该将elem添加到集合中并返回Alphabet。

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

以上是关于在scala上继承和构造函数问题的类实现的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 中创建构造函数的代码片段或快捷方式

Scala 多继承顺序

JavaScript的类

如何创建类型化工厂方法构造函数的类层次结构并使用抽象类型从 Scala 访问它们?

C++实现一个不能被继承的类

借用构造函数实现继承