在Scala代码中键入不匹配

时间:2016-07-27 08:58:58

标签: scala functional-programming parentheses

这是用于平衡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
      }

有谁能告诉我为什么会出现这个错误?

1 个答案:

答案 0 :(得分:4)

代码充满了错误。

您返回Nil,而您的函数返回类型为Boolean

您使用不带else的条件定义if

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

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