2016-07-27 116 views
-3

以下是在scala中平衡括号的函数。我越来越Scala代码中的类型不匹配

Error:(36, 10) type mismatch; 
found : Unit 
required: Int 
     a=a+1 
var a = 0 

     def balance(chars: List[Char]): Boolean = { 
     if(chars.isEmpty) 
      return Nil 
     { 
      if (chars.head == ')') 
      a=a-1 
      else (chars.head == '(') 
      a=a+1 
     } 
     if (a == -1) 
      return false 
     if ((a == 1 || a == 0) && chars.tail.isEmpty!= 0) 
      balance(chars.tail) 
     if (a == 0 && chars.tail.isEmpty) 
      return true 
     } 

谁能告诉我,为什么这个错误会来吗?

回答

4

代码充满了错误。

您将返回Nil而您的函数具有返回类型Boolean

您在没有if的条件下定义了else

您使用不明确的条件chars.tail.isEmpty!= 0

修复这些并重新发布您的代码。有更多的错误,但目前很难判断是否要递归调用并返回空列表或在某种情况下返回。如果你仍然有问题,我会适当地更新我的答案。