返回单位的方法类型不匹配

时间:2013-01-30 23:17:05

标签: scala

我是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()

1 个答案:

答案 0 :(得分:1)

不可变Stack的{​​{1}}返回尾部。 pop应该修复它。或使用可变的。