我目前整理了以下代码,它们识别元素并据称将它们添加到集合中但是当我打印出集合时,集合中充满了函数
class PropositionOrderer extends Identity{
var Names = SortedSet[Name] _
override def variable = {
_ match {
case name =>
Names+(name)
Variable(name)
}
}
}
我想在命题上调用它,并在命题
中获取已排序的名称列表type Names = SortedSet[Name]
val Names = SortedSet[Name] _
def vars: Proposition => Names =
{
case p =>
val prop = new PropositionOrderer
prop.visit(p)
println(prop.Names)
//this just to fit the return definition
Names("Dan","Web")
}
如果我返回prop.Names,它说我正在返回错误类型的对象。有什么想法吗?
答案 0 :(得分:3)
这里有几个问题。我会列出一些。纠正这些应该会让你走上正轨。
首先,您以两种不同的方式定义Names
,这是不好的。看起来你认为它是一种类型,所以坚持下去。
type Names = SortedSet[Name] // this defines a new type called `Names`
val Names = ... // this defines a variable called `Names`
接下来,如果要定义一个新的空SortedSet
,语法如下。 (请注意,变量名应始终为小写。大写字母为类型名称保留。)
val names = SortedSet[Name]() // `names` is a new `SortedSet`
val Names = SortedSet[Name] _ // `Names` is a function that takes multiple `Name` arguments and constructs a `SortedSet`
第三,如果您要向Set
添加内容,则必须使用+=
,否则现有的设置不会更改。
var names = SortedSet[String]()
names + "test" // `names` is unchanged
names += "test" // `names` is updated