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

问题描述 投票:-3回答:1

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

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个未实现的成员”我该怎么办?我是这种语言的初学者

scala inheritance constructor
1个回答
0
投票

扩展类或特征时,需要实现其抽象(“未实现”)成员(包括其继承的抽象成员)。如果你正在扩展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的文档中找到更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.