对于计算理论,我想按如下方式编写课程
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;我该怎么办?我是这种语言的初学者
答案 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
应将+=
添加到集合中并返回字母。
您可以在GenSetLike,SetLike和mutable.SetLike的文档中找到更多信息。