在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。
您可以在GenSetLike,SetLike和mutable.SetLike的文档中找到更多信息。
以上是关于在scala上继承和构造函数问题的类实现的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中创建构造函数的代码片段或快捷方式