我是Scala的新手,无法找到明确的信息。
我有这个对象:
object pc {
val stack = new Stack[Lattice]
def top(): Lattice = stack.top
def pop() = stack.pop
def push(lev: Lattice) =
if (stack.isEmpty) stack push lev
else stack.push(lev(pc.top))
}
但是当我尝试使用pc.pop()
弹出时,我得到一个类型不匹配,要求我需要从程序中的其他类返回一个类型,尽管找到类型Lattice
。通话示例:
case If(e, t1, t2) ⇒ {
val v = eval(e)
if ( v.T ) {
pc.push(v.myLevel.⊔(pc.top()))
eval( t1 )
pc.pop()
} else {
pc.push(v.myLevel.⊔(pc.top()))
eval(t2)
pc.pop()
}
}
这是我尝试使用pop
时的确切错误interpreter.scala:127: error: type mismatch;
found : ScalaObject
required: cs162.miniJS.values.Storable
pc.pop()
答案 0 :(得分:1)
不可变Stack
的{{1}}返回尾部。 pop
应该修复它。或使用可变的。